前言

环境准备

  • 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

补充:pcscrmsh是集群的全生命周期管理工具;
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
# 提交配置

到此一个双节点的高可用配置完成

Hello World

最后修改:2019 年 11 月 26 日 04 : 23 PM
如果觉得我的文章对你有用,请随意赞赏