We recently setup the thinlinc HA to test the failover. The vsmserver.hconf on 1 node looks like
# cat /opt/thinlinc/etc/conf.d/vsmserver.hconf # -*- mode: conf-unix; -*- # Hiveconf configuration file - VSM server # [/vsmserver] # Administrators email admin_email=root@localhost # # Terminal servers. A space-separated list of agent server hostnames. These will # be used for communication between the server and the agent. The names reported # to clients are fetched from the agent itself; names in terminalservers are not # reported directly to clients. # terminalservers=thinlinc01.abc.com # Load balance finetuning ram_per_user=100 bogomips_per_user=600 existing_users_weight=4 load_update_cycle=40 # The maximum number of sessions per user. 0 means no limit. max_sessions_per_user=4 # Only allow connections from clients in this space-separated list for priv # operations localhost and hostname IP are always allowed. allowed_clients= # ThinLinc access can be limited to certain groups. If the allowed_groups # space-separated list is empty, all users are accepted. Otherwise, the user # must be a member of the groups listed below, to be able to use ThinLinc. # Example: allowed_groups=students teachers allowed_groups= # If true, processes occupying the users interval of forwarded ports # will be killed. unbind_ports_at_login=true # A space-separated list of candidate:agenthost pairs that can be used to force # sessions for specific users or groups to be created on specific agent hosts. # Note that only one server can be specified per candidate. No load # balancing is in use for servers selected this way. # # If the specific server is down, no session will be created. # # If a server specified here is also listed in terminalservers, # sessions will also be created for users or groups not listed here. # Use of this parameter is recommended only for special circumstances, # for example when testing new operating systems. # # Groupnames should be prepended by a '+'. Example: # explicit_agentselection=+agentoneusers:agentone explicit_agentselection= # Port to listen on # This should normally be the same as /vsm/vsm_server_port, but under # some special circumstances, it might be set to another value. listen_port=9000 [/vsmserver/subcluster/default] agents=thinlinc01.abc.com thinlinc02.abc.com [/vsmserver/HA] # Enable HA operations by setting this to 1. enabled=1 # A space-separated list of the nodes in the cluster nodes=thinlinc01.abc.com thinlinc02.abc.com
and vmsagent.conf looks like -
[/vsmagent] # The host that runs the VSM server (master machine) master_hostname=thinlinc.abc.com (hostname of LB) # Only allow connections from the VSM servers in this space-separated list. # localhost, hostname, IP and master_hostname are always allowed. NOTE: Do not # change this parameter unless you know what you are doing. allowed_clients=thinlinc01.abc.com thinlinc02.abc.com # Automatically create the users home directory, if it doesn't exist? make_homedir=1 # The file mode for the newly created home directory make_homedir_mode=0700 # The default geometry, if the client doesn't request anything. default_geometry=1024 768 # Save password for future logins? single_signon=1 # Extra arguments to pass to the Xserver Xvnc, for example: # xserver_args=-MaxIdleTime 60 xserver_args=-br -localhost -verbose 3 # The location of the Xauthority file, either homedir or sessiondir xauthority_location=sessiondir # Public hostname; the hostname that clients are redirected to. If not # defined, the agent will use the computer's IP address. agent_hostname= # The maximum port used for VNC and tunnel ports for displays # display_min to display_max. This number may not be higher than # lowest_user_port max_session_port=32767 # The lowest port to be used for user programs needing TCP/UDP ports. # This must be higher than max_session_port. lowest_user_port=32768 # Where to start allocating display numbers. display_min=10 # Timeout in tenths of seconds, for starting new sessions xvnc_start_timeout=250 # The maximum display number to use on this VSM agent host. # display_max - display_min is the maximum number of ThinLinc users # allowed on this host. Default is 2000. display_max=2000 # Port to listen on # This should normally be the same as /vsm/vsm_agent_port, but under # some special circumstances, it might be set to another value. listen_port=904 # Environment variables to add to users environment, before running # xstartup. Note: Since xstartup is run through /bin/bash --login, # files in /etc/profile.d/ will be sourced and may override values in # default_environment. # Note: TOWN is just an example.
The same configuration is there in other node too
So, when user tries to connect to LB IP - then the session is created in either thinlinc01.abc.com
or thinlinc02.abc.com which is fine . Now, when i shutdown the node where the session was connected - i am expecting the session to get transfered to another node - which is not happening .
When the session first gets created in thinlinc01, there in logs i see
2023-05-16 15:22:03 DEBUG vsmserver: Requesting VSM Agent 127.0.0.1 to unbind ports for mhartman's display 10 2023-05-16 15:22:03 DEBUG vsmserver: Handling connection from ('loadbalancerIP', 1023) 2023-05-16 15:22:03 DEBUG vsmserver.HA: Handling session change (new, abcd/127.0.0.1:10) 2023-05-16 15:22:03 WARNING vsmserver.HA: Other node sent (new,abcd), but we already have this information 2023-05-16 15:22:03 DEBUG vsmserver.HA: Successfully transferred session change (new,abcd/127.0.0.1:10) to other node 2023-05-16 15:22:03 DEBUG vsmserver.HA: Writing active HA changes to disk 2023-05-16 15:22:03 DEBUG vsmserver.HA: Done writing active HA changes
And then i was expecting some kind of HA logs in other node too i,e thinlinc02 but there wasn’t any.
And now when i shutdown the thinlinc01 node the session was not there in 02 node and When i checked the logs of 01 when i started it again after sometime i did see
2023-05-16 14:59:33 DEBUG vsmserver.HA: Writing active HA changes to disk 2023-05-16 14:59:33 DEBUG vsmserver.HA: Done writing active HA changes 2023-05-16 14:59:33 DEBUG vsmserver: Handling connection from ('loadbalncerIP, 1022) 2023-05-16 14:59:33 DEBUG vsmserver.HA: Handling session change (delete, abcd/127.0.0.1:10) 2023-05-16 14:59:33 WARNING vsmserver.HA: Other node told us to remove non-existing session abcd/127.0.0.1:10 2023-05-16 14:59:33 DEBUG vsmserver: Handling connection from ('127.0.0.1', 46540) 2023-05-16 14:59:33 WARNING vsmserver.HA: Tried to transfer session change (delete,abcd/127.0.0.1:10) to other node but other node reported HA_NOSUCHSESSION 2023-05-16 14:59:33 DEBUG vsmserver.HA: Writing active HA changes to disk 2023-05-16 14:59:33 DEBUG vsmserver.HA: Done writing active HA changes 2023-05-16 14:59:33 DEBUG vsmserver.session: User with uid 0 requested a socket 2023-05-16 14:59:34 DEBUG vsmserver: Scheduled load update of 127.0.0.1 at Tue May 16 15:00:14 2023
Can you please help me here and point if i am missing something ?