主机名 | ip | 服务 |
---|---|---|
hetoto2 | 172.25.12.2 | node1 |
hetoto3 | 172.25.12.3 | node2 |
1、配置高级yum源
两个节点都配置:
[root@hetoto2 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ScalableFileSystem]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.12.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@hetoto2 ~]# yum clean all
[root@hetoto2 ~]# yum repolist
[root@hetoto2 ~]# scp /etc/yum.repos.d/rhel-source.repo [email protected]:/etc/yum.repos.d/
[root@hetoto2 ~]# yum clean all
[root@hetoto2 ~]# yum repolist
2、安装配置corosync、pacemaker
两个节点都装上软件,从物理机拷过去
yum install pacemaker crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
ls /etc/corosync/
[root@hetoto2 ~]# cd /etc/corosync/
[root@hetoto2 corosync]# cp corosync.conf.example corosync.conf
[root@hetoto2 corosync]# vim corosync.conf
配置文件编辑的详细内容解释如下:
# Please read the corosync.conf.5 manual page
compatibility: whitetank
totem { #定义集群里面各节点是咋么通信的totem本是一种协议,专用于corosync各节点间的协议
version: 2 #totem的版本不可更改
secauth: off #安全认证
threads: 0 #用于安全认证开启的并线程数
interface {
ringnumber: 0 #回环号码
bindnetaddr: 172.25.12.0 #绑定心跳网段,corosync会自动判断本地网卡上配置的哪个IP地址属于这个网络的,并把这个接口作为多播心跳信息传递的接口
mcastaddr: 226.94.1.1 #心跳信息组播地址,每个节点的组播地址必须为同一个
mcastport: 5405 #组播时使用的端口
ttl: 1 #只向外显示心跳信息,避免组播报文回路
}
}
logging {
fileline: off #指定要打印的行
to_stderr: no #日志信息是否发往本地错误输出(默认否)
to_logfile: yes #是否记录日志文件
to_syslog: yes是否记录日志文件,是否记录于syslog日志
logfile: /var/log/cluster/corosync.log #日志存放位置
debug: off #只要不是为了排错,最好关闭debug它纪录的信息过于详细,会占用大量的磁盘I/O
timestamp: on #是否打印时间戳利用于定位错误,但会产生大量的系统调用,消耗cpu资源
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
#如果想让pacemaker在corosync中以插件方式启动,需要在配置文件加上如下内容:
service {
name:pacemaker #模块名,启动corosync时同时启动pacemaker
ver:0
}
[root@server2 corosync]# scp corosync.conf [email protected]:/etc/corosync/
[email protected]'s password:
corosync.conf 100% 481 0.5KB/s 00:00
[root@hetoto2 corosync]#
5、node1、node2同时启动corosync服务
[root@hetoto2 corosync]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]
[root@hetoto2 corosync]#
[root@hetoto3 ~]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]
在node2上动态监控
crm_mon
crm
虚拟窗口功能:
configure 节点
primitive:配置主资源
resource 资源管理器
cib 资源管理窗口
node 节点的管理
verify:语法检测
commit:保存
property:全局资源配置
8、node1上关闭fence机制,因为还没有对fence进行配置,先将station-enabled设置为faulse,表示资源不会迁移
[root@hetoto2 corosync]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# verify
crm(live)configure# commit
[root@hetoto2 corosync]# crm
crm(live)# configure
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.12.100 nic=eth0 cidr_netmask=24
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure#
如果添加资源添加错了,进入resource先将资源组停掉,再将资源停掉,然后进configure里删除:crm---->resource---->show---->stop vip---->cd---->configure---->show---->delete vip或者edit在配置文件里删除
10、node1上配置apache服务
1、在node1、node2上安装httpd,编写默认发布页
yum install httpd -y
vim /var/www/html/index.html
2、添加资源:启动脚本
[root@hetoto2 corosync]# crm
crm(live)# configure
crm(live)configure# primitive apache lsb:httpd op monitor interval=10s
crm(live)configure# verify
crm(live)configure# commit
注意:node2动态监控下看到此时的VIP在hetoto2上,httpd在hetoto3上
11、node1设置资源组
crm(live)configure# group website vip apache
crm(live)configure# verify
crm(live)configure# commit
12、测试
[root@hetoto2 corosync]# /etc/init.d/corosync stop
Signaling Corosync Cluster Engine (corosync) to terminate: [ OK ]
Waiting for corosync services to unload:. [ OK ]
[root@hetoto2 corosync]#
13、node1上设置后端服务器负载均衡
打开上一步关闭的服务
[root@hetoto2 corosync]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]
[root@hetoto2 corosync]# crm
crm(live)# configure
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure#
注意: 默认一般为三台服务器组,当一个挂掉,另外的进行票选进行谁上线,此处是两台,当票选不够,忽略
这时即使一个节点挂掉了,另外一个节点也会接管开始正常工作
将hetoto2上的corosync服务停掉:
[root@hetoto2 corosync]# /etc/init.d/corosync stop
Signaling Corosync Cluster Engine (corosync) to terminate: [ OK ]
Waiting for corosync services to unload:. [ OK ]
node2动态监控可以看到:
apache服务组在hetoto3上运行了!!!
在pacemaker默认会将fence和资源放在不同的服务器上
1、在hetoto2、hetoto3上建立目录
[root@hetoto2 corosync]# mkdir /etc/cluster
[root@hetoto3 ~]# mkdir /etc/cluster
2、查看fence服务的状态,生成密钥
[root@foundation12 Desktop]# systemctl status fence_virtd.service
● fence_virtd.service - Fence-Virt system host daemon
Loaded: loaded (/usr/lib/systemd/system/fence_virtd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Jun 13 13:21:10 foundation12.ilt.example.com systemd[1]: [/usr/lib/systemd/system/fence_virtd.service:2...red
Hint: Some lines were ellipsized, use -l to show in full.
[root@foundation12 Desktop]# cd /etc/cluster/
[root@foundation12 cluster]# rm -rf fence_xvm.key
[root@foundation12 cluster]# ls
[root@foundation12 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000181031 s, 707 kB/s
[root@foundation12 cluster]# ls
fence_xvm.key
[root@foundation12 cluster]# scp fence_xvm.key [email protected]:/etc/cluster/
[root@foundation12 cluster]# scp fence_xvm.key [email protected]:/etc/cluster/
4、在hetoto2和hetoto3上查看密钥是否存在
5、在node1、node2上查看此时的fence设备
stonith_admin -I
yum provides */fence_xvm
yum install fence-virt-0.2.3-15.el6.x86_64 -y
stonith_admin -I
7、在node1上将之前停掉的fence服务开启,添加fence设备
开启上一步测试关闭的服务
[root@hetoto2 cluster]# /etc/init.d/corosync start
Starting Corosync Cluster Engine (corosync): [ OK ]
[root@hetoto2 cluster]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=true
crm(live)configure# primitive vmfence stonith:fence_xvm params pcmk_host_map="hetoto2:hetoto2;hetoto3:hetoto3" op monitor interval=1min
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# exit
bye
此时在node2上监控:
可以看到fence设备和资源分别被加在不同的服务器上
8、测试
测试1:
/etc/init.d/httpd status
ip addr show eth0
crm_mon
会发现fence设备和资源都被加在同一台服务器,会出现报错
echo c >/proc/sysrq-trigger
测试3:将hetoto3和hetoto2的corosync开机自启
[root@hetoto3 ~]# /etc/init.d/corosync status
corosync is stopped
[root@hetoto3 ~]# chkconfig corosync on
[root@hetoto3 ~]#
[root@hetoto2 ~]# chkconfig corosync on
在hetoto2监控:将server3的服务开启会发现资源和fence设备分配在不同服务器
测试4: