|
基于Corosync/openais和ldirectord实现LVS(DR)中的Director的高可用
托普图:
1.我这里用到了4台虚拟机,分别是
node1:172.16.133.11
node2:172.16.133.12
rs1:172.16.133.21
rs2:172.16.133.22
2.配置两台Real Server
rs1:安装httpd
- yum -y install httpd
- vim /var/www/html/index.html
- rs1
- service httpd start
- elinks -dump http://172.16.133.21
rs2:同rs1,其中/var/www/html/index.html的内容改为rs2
测试elinks -dump http://172.16.133.22
3.配置Director
在这之前请确保node1和node2之间的时间相同,或者不能相差太大
后面操作所会用到的包
(1).先使node1和node2主机建立双机互信,为后面实验提供方便
node1:
- vim /etc/hosts
- 172.16.133.11 node1
- 172.16.133.12 node2
- ssh-keygen -t rsa(一路回车)
- ssh-copy-id .ssh/id_rsa.pub root@node2
- scp /etc/hosts node2:/etc
node2:
- ssh-keygen -t rsa
- ssh-copy-id .ssh/id_rsa.pub root@node2
(2).然后在分别在node1和node2主机上安装ipvsadm,对两台Real Server进行测试
rs1,rs2,ipvsadm测试,heartbeat,ldirectord,ha.cf等配置文件修改同:http://5142926.blog.运维网.com/5132926/954276
这里就不演示了
(3)配置Direcotor
node1:
先将corosync的配置文件copy到/etc/corosync下
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
修改corosync.conf
- bindnetaddr: 172.16.133.0
- service {
- ver: 0
- name: pacemaker
- }
- aisexec {
- user: root
- group: root
- }
mkdir -v /var/log/cluster 创建日志文件目录
corosync-keygen 生成corosync密钥,它取墒池里的随机数1024位,它不是一个文本文件,权限是400
- scp /etc/corosync/corosync.conf node2:/etc/corosync
- ssh node2 'mkdir -v /var/log/cluster '
然后启动服务
grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
grep TOTEM /var/log/messages
grep ERROR: /var/log/messages | grep -v unpack_resources
grep pcmk_startup /var/log/messages
如果以上没问题的话
ssh node2 -- /etc/init.d/corosync start启动node2的corosync
然后通过crm status查看
禁用stonith
crm configure property stonith-enabled=false
关闭quorum
crm configure property no-quorum-policy=ignore
4.配置资源,实现LVS(DR)中的Director的高可用
(1).进入crm的交互式界面,进入后,可以通过输入help可以查看帮助信息
crm
下面主要介绍一下我们经常用到的几项
node 进入节点模式,可以设置节点standby或者online
configure 进制配置模式,在里面可以定义资源和资源的策略
ra 资源代理,在里面可以通过使用list命令来查看可以用到的资源代理,资源代理既服务的启动脚本。
classes命令,用于显示资源代理的种类,可以看到有heartbeat lsb osf stonith这些常见的类型
list lsb
可以显示支持的lsb脚本,这些都是/etc/init.d/下面有的启动脚本
meta ocf:heartbeat:IPaddr查看定义IPaddr资源的帮助信息
(2).具体资源配置
定义vip
- crm
- configure
- primitive webip ocf:heartbeat:IPaddr params ip=172.16.133.1
完成后show查看下,无误后
commit提交(不提交是不生效的)
cd
status查看资源运行情况
然后ifconfig一下,看看ip
定义ldirector
- crm
- configure
- primitive ldirector lsb:ldirectord
- commit
- cd
status
然后可以看到ldirector运行在了node2节点上
(3).配置资源关系
order 顺序约束
location位置约束
colocation排列约束
可以通过order help(其他一样)来查看约束怎么设置
colocation webip_with_ldirector inf: webip ldirector
show查看一下
commit提交
cd
status
停掉node2
crm
status
两个服务都跑到node1上了
在google浏览器中测试http://172.16.133.1
|
|
|