前言
环境准备
- OS: CentOS 7 x86_64
- Node1 IP: 192.168.153.140 #集群之间传递心跳信息的IP地址
- Node2 IP: 192.168.153.141 #集群之间传递心跳信息的IP地址
- VIP: 192.168.153.120 # web服务访问IP地址
- Host: hosts文件要定义两个节点的主机名和IP
hosts:
node1 192.168.153.140
node2 192.168.153.141
# 两个节点都要有其他节点的host信息,主机名(hostname)也要一致
安装pcsd和crmsh
1.安装pcsd
~]# ansible web_cluster -m yum -a 'name=pcsd'
~]# ansible web_cluster -m service -a 'name=pcsd state=started enabled=yes'
安装pcsd时会自动安装
pacemaker
,和其他集群核心程序
2.安装crmsh
补充:
pcs:agent (pcsd)依赖代理服务;
crmsh: agentless (pssh)无代理,依赖pssh。
pcs
和crmsh
是集群的全生命周期管理工具;pcs:agent (pcsd)依赖代理服务;
crmsh: agentless (pssh)无代理,依赖pssh。
配置节点
一:新建用户
~]# ansible web_cluster -m group -a 'name=hacluster system=yes gid=189' # 要使用没有被占用的GID
~]# ansible web_cluster -m user -a 'name=hacluster system=yes uid=189 group=hacluster' #uid和gid要保证相同,不然后续操作很有可能报错!
~]# ansibel web_cluster -m shell -a 'echo "123456"|passwd --stdin hacluster' # 设置密码
二:节点认证
~]# pcs cluster auth node1 node2 -u hacluster # -u 指定认证的用户名,根据提示输入用户的密码
三:设置集群
~]# pcs cluster setup --name web_cluster node1 node2
补充
pcs cluster setup --name 集群名称 节点一 节点二 ...
--name NAME 集群名称
--transport <udpu|udp> 指明传输协议
--mcast0指明多播地址
<!--如果出现语法不解析,是由于上面的引用导致的!-->
启动集群
~]# pcs cluster start --all # --all表示启动所有集群,指定name可以只启动某集群
资源配置
一:安装httpd
~]# ansible web_cluster -m yum -a 'name=httpd' #这里用到了ansible管理集群,安装httpd
~]# ansible web_cluster -m service -a 'name=firewalld state=stopped enabled=no' #关闭防火墙
二:提供不同的首页
以示区别当前服务在那个节点
Node1
~]# echo "<center><h1>This is Node1!</h1></center>" > /var/www/html/index.html
Node2
~]# echo "<center><h1>This is Node1!</h1></center>" > /var/www/html/index.html
三:添加资源
补充
查看支持那些资源
~]# crm #进入crm交互式命令行界面
crm(live)# cd ra # 进入资源子命令
crm(live)# classes #显示全部资源类别
lsb
ocf / .isolation heartbeat openstack pacemaker
service
systemd
crm(live)# list systemd #查看该类别下的所有资源
进入配置文件子命令:
~]# crm configure
crm(live)configure# property stonith-enabled=false
# 设置stonith为flase,因为此时没有隔离设备
crm(live)configure# primitive webip ocf:heartbeat:IPaddr params ip=192.168.153.120
# primitive 资源名称 资源代理 params 参数,这里是配置的是VIP资源
crm(live)configure# primitve webserver systemd:httpd
# systemd 不需要参数,指定那个服务就可以了
# 由于VIP要和Httpd在一个节点才有效,于是需要把他们定义为组
crm(live)configure# group WebService webip webserver
# group 组名 资源一 资源二 ... (注意资源的顺序,可能是资源启动的顺序)
crm(live)configure# verify
# 检查之前的操作是否正确,无提示即为正确
crm(live)configure# commit
# 提交配置
到此一个双节点的高可用配置完成