实验环境:
操作系统fedora21
1 2 |
192.168.122.119 serverc 192.168.122.41 serverd |
serverc的eth0的配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
TYPE="Ethernet" <strong>BOOTPROTO="static" IPADDR=192.168.122.119 NETMASK=255.255.255.0 GATEWAY=192.168.122.1</strong> DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="eth0" UUID="614141f2-875a-4543-ab07-84dbe4f53bb2" <strong>ONBOOT="yes"</strong> HWADDR="52:54:00:51:D2:0D" PEERDNS="yes" PEERROUTES="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[root@serverd ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BOOTPROTO="static" IPADDR=192.168.122.41 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" NAME="eth0" UUID="029eb586-9ff7-453e-816d-db868290272b" ONBOOT="yes" HWADDR="52:54:00:BE:DE:99" PEERDNS="yes" PEERROUTES="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" |
两台虚拟机的主机名称分别设置为离serverc ,和serverd,并且加入离/etc/hosts,保证两个虚拟机之间能够解析
然后配置两台主机可以相互免密码登陆
安装相关软件(两台):
yum install -y pacemaker pcs psmisc policycoreutils-python
防火墙:
firewall-cmd –permanent –add-service=high-availability
firewall-cmd –reload
直接关闭也行
setenforce 0
启动
systemctl start pcsd.service
systemctl enable pcsd.service
修改密码passwd hacluster
如上所有操作都是两台
好了,我们开始把两台关联起来,因为上边所有的步骤都没牵扯到另外的一台机器
pcs cluster auth serverc serverd
1 2 3 4 5 6 |
[root@serverc ~]# pcs cluster auth serverc serverd Username: hacluster Password: serverc: Authorized serverd: Authorized [root@serverc ~]# |
pcs cluster setup –name mycluster serverc serverd
好了,然后我们就撘建好了….当然,没蛋用,因为还没有设置
先启动
1 |
pcs cluster start --all |
通过如下命令检验
1 |
corosync-cfgtool -s |
好了,我们增加一个虚拟IP:
首先这个192.168.122.120现在是没有的,我们增加之后就形成两一个主备两台机器,然后其中一台来充当这个120
校验配置:
crm_verify -L -V
修正:
pcs property set stonith-enabled=false
一定要校验之后添加,否则会出现其不来的情况
1 2 |
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 \ ip=192.168.122.120 cidr_netmask=32 op monitor interval=30s |
然后这个时候我们就能够Ping 120了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@serverc ~]# pcs status Cluster name: mycluster WARNING: corosync and pacemaker node names do not match (IPs used in setup?) Last updated: Thu Dec 17 14:33:31 2015 Last change: Thu Dec 17 14:32:09 2015 by root via cibadmin on serverc Stack: corosync Current DC: serverc (version 1.1.13-3.fc21-44eb2dd) - partition with quorum 2 nodes and 1 resource configured Online: [ serverc serverd ] Full list of resources: ClusterIP (ocf::heartbeat:IPaddr2): Started serverc PCSD Status: serverc member (serverc): Online serverd member (serverd): Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled [root@serverc ~]# |
注意:pacemaker有apache相关打模块,可以添加一个apache服务相关的,但是我感觉下边的方法要简单一些
然后我们在两台机器上都安装apache
yum install httpd
然后启动
systemctl start httpd
然后,我们编辑
vi /var/www/html/index.html
serverc,我们输入serverc
serverd,我们输入serverd
1 2 3 4 5 |
[root@serverc ~]# curl localhost iiiiiiserverc [root@serverc ~]# curl http://192.168.122.120 iiiiiiserverc [root@serverc ~]# |
1 2 |
[root@serverd ~]# curl 192.168.122.120 iiiiiiserverc |
如上结果说明我们现在访问的是serverc上的apache
好了,现在我们制造一些麻烦
我们把serverc上的pacermaker停掉,相当于关机什么的,看看能不能自动调转过去
pcs cluster stop serverc
然后我们再访问
1 2 3 |
[root@serverd ~]# curl 192.168.122.120 iiiiserverd [root@serverd ~]# |
发现自动跳到serverd去了
此情况仅仅适用于特殊情况,apache配置文件的更新在这个例子中是一个问题,当然如故使用pacemaker自带的apache模块的话这个问题就没有两
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021