集群正常工作时,所有节点都在一个分区内(partition),分区内的所有节点将选举出一个仲裁节点,这个仲裁节点负责向其他节点发送集群控制命令。当网络发生故障时,集群中的节点发现无法和仲裁节点通信,则会在可通信的范围内重新选举一个新的仲裁节点。此时集群内可能出现多个仲裁节点,每个仲裁节点的管理范围为一个分区。
下文中将通过防火墙策略的设置模拟集群网络中通信出现异常的各种情况,如:
通过防火墙策略可以精准控制两两节点之间的连通性,使我们能更准确的了解在网络连通性发生变化对集群的影响。
在所有节点上启动防火墙,并添加策略对整个管理网络192.168.56.0/24放通。
保存上述策略,之后在实验过程会使用iptables命名加入新策略模拟网络通信异常效果,如果需要恢复网络通信正常状态,直接不保存策略重启firewalld服务即可。
通过pcs status查看集群状态:
上述结果显示当前集群只有一个分区,分区内的节点包括全部3台主机,仲裁节点是ha-host3,这表示集群间的通信是完好的。下图显示当前集群状态:
在ha-host1上添加以下策略:
该策略将使得ha-host1和ha-host3之间的通信中断,在所有节点上查看集群状态:
上面的结果显示,ha-host1失去和当前仲裁节点ha-host3的联系之后,和ha-host2一起组成新的分区并选举出ha-host2作为新的仲裁节点。有趣的是ha-host2和ha-host3的通信并未中断,但是他被“优先级较高的ha-host1抢走并推举为老大”,剩下ha-host3独自留在其自身所在的分区。此时ha-host3所在的分区提示了“partition WITHOUT quorum”,表示该分区中的节点数目不超过一半。
下图显示当前集群状态:
在ha-host1上再添加策略:
使其和当前的仲裁节点ha-host2的通信中断,集群状态变为:
发现ha-host2和ha-host3一起组成了新的分区,由于ha-host1所在分区节点数不足一半,无法启动资源,虚拟ip资源vip被切换到了ha-host2上。下图显示当前集群状态:
如果再把ha-host2和ha-host3直接的通信中断,此时3个节点间两两均无法通信。每个节点都是一个分区,每个分区的主机数均不过半,因此无法启动任何资源,原先运行在ha-host2上的vip也停止了。
当前集群状态如下图:
它非常适合用来快速配置一个集群中的所有运行相同服务和具备相同配置的计算机节点。现在有大量的开源管理工具,都可以实现这样的管理,比如dsh、SUSE Manager等。下面是用ClusterSSH管理多台Linux服务器的具体过程。如果你是一名Linux系统管理员,那你每天一定会和许许多多的机器打交道,因为你要定期监测和维护这些机器,如一批Web服务器,如果你要同时在多台机器上敲入相同的命令,你可能会通过SSH登录,然后逐台敲入,如果使用ClusterSSH,可以为你节省不少类似的工作时间。
ClusterSSH是用Tk/Perl包装XTerm和SSH后形成的新工具,就其本身而言,它可以运行在任何兼容POSIX的 *** 作系统上,我曾经在Linux,Solaris和Mac OS X上运行过它,它需要Perl库Tk(在Debian或Ubuntu上就是perl-tk)和X11::Protocol(在Debian或Ubuntu上就是libx11-protocol-perl),此外,xterm和OpenSSH是必不可少的。
安装在Debian或Ubuntu上安装ClusterSSH是相当简单的,只需要敲入sudo apt-get install clusterssh就可以安装好,至于依赖包你也不必担心,一切都会为你装好的,它也提供了适合Fedora的rpm包,在FreeBSD上可通过port系统安装,还为Mac OS X准备了MacPort版本,因此你可以在你的苹果电脑上安装ClusterSSH,当然,如果你是极客,也可以下载源代码自己编译。
配置可以通过ClusterSSH的全局配置文件/etc/clusters,或用户home目录下的。csshrc文件来配置它,我喜欢用户级的配置方式,这样同一个系统中的不同用户可以根据自己的喜好进行配置,ClusterSSH定义了一个“cluster”机器组,你可以通过一个界面来控制这个组中的所有机器,在配置文件的顶端“clusters”部分,你可以详尽地列出你的集群,然后用独立的段落来描述每个集群。
例如,假设我有两个集群,每个集群由两台机器组成,“Cluster1”由“Test1”和“Test2”两台机器组成,“Cluster2”由“Test3”和“Test4”两台机器组成,~.csshrc(或/etc/clusters)配置文件的内容看起来应该是:
clusters = cluster1 cluster2
cluster1 = test1 test2
cluster2 = test3 test4你也可以创建中间集群(包含其它集群的集群),如果你想创建一个名叫“all”的集群包含所有的机器,有两种实现手段,首先,你可以创建一个包含所有机器的集群,如:
clusters = cluster1 cluster2 all
cluster1 = test1 test2
cluster2 = test3 test4
all = test1 test2 test3 test4但我更喜欢的方法是使用一个包含其它集群的中间集群:
clusters = cluster1 cluster2 allcluster1 = test1 test2
1、在本机安装SSH工具,(SSH工具有很多比如xShell、FianlShell)2、在Linux中配置ssh服务,
3、本机打开SSH工具配置Linux的ip地址及端口号即可同时连接多台Linux主机进行 *** 作。
望采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)