Loading... <h1 style="font-size: 2.6em;margin: 21px 0px 10.5px;font-family: inherit;color: inherit">Corosync + Pacemaker 搭建高可用Httpd服务</h1> <p style="margin-top: 0px;margin-bottom: 1.1em"></p> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">实验描述</h2> <p style="margin-top: 0px;margin-bottom: 1.1em"><strong>1.两个测试节点,分别为<code>node5.redhat.com</code>和<code>node6.redhat.com</code>地址分别为<code>172.16.100.5</code>和<code>172.16.100.6</code></strong><br /><strong>2.集群服务为httpd,利用nfs做共享存储,NFS地址为<code>172.16.0.254</code>,NFS已经共享出了一个<code>/www/htdocs</code>目录并且里面有<code>index.html</code>文件。</strong><br /><strong>3.VIP地址为<code>172.16.100.100</code></strong><br /><strong>4.两个节点系统全部为CentOS7.2</strong><br /><strong>5.由于本人还需要上班,所以时间紧张,描述的有点马虎,请多见谅。如有错误的地方,还请提出改正。</strong></p> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">配置步骤</h2> <p style="margin-top: 0px;margin-bottom: 1.1em">1.在所有节点安装<code>pcs</code>,并启动相应的<code>pcsd</code>进程</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# yum install pcs -y<br />[root@node5 ~]# systemctl start pcsd.service</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node6 ~]# yum install pcs -y<br />[root@node6 ~]# systemctl start pcsd.service</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">2.给所有节点上的<code>hacluster</code>用户设置一个密码。</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# echo “redhat” | passwd –stdin hacluster</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node6 ~]# echo “redhat” | passwd –stdin hacluster</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">3.在一个节点上验证两个节点</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node5 ~]# pcs cluster auth node5.redhat.com node6.redhat.com<br />Username: hacluster<br />Password: <code>这里输入的密码默认不会显示</code><br />node5.redhat.com: Authorized<br />node6.redhat.com: Authorized</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">4.将两个节点加入集群</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# pcs cluster setup –name mycluster node5.redhat.com node6.redhat.com<br /><code>添加节点的输出信息</code><br />Shutting down pacemaker/corosync services…<br />Redirecting to /bin/systemctl stop pacemaker.service<br />Redirecting to /bin/systemctl stop corosync.service<br />Killing any remaining services…<br />Removing all cluster configuration files…<br />node5.redhat.com: Succeeded<br />node6.redhat.com: Succeeded<br />Synchronizing pcsd certificates on nodes node5.redhat.com, node6.redhat.com…<br />node5.redhat.com: Success<br />node6.redhat.com: Success</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">Restaring pcsd on the nodes in order to reload the certificates…<br />node5.redhat.com: Success <code>*显示添加成功*</code><br />node6.redhat.com: Success <code>*显示添加成功*</code></p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">5.两个节点同时启动<code>corosync</code>和<code>pacemaker</code>进程</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# systemctl start corosync.service<br />[root@node5 ~]# systemctl start pacemaker.service</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node6 ~]# systemctl start corosync.service<br />[root@node6 ~]# systemctl start pacemaker.service</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">6.在两个节点上安装httpd进程并设置为开机启动</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">root@node5 ~]# yum install httpd -y<br />systemctl enable httpd.service</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">root@node6 ~]# yum install httpd -y<br />systemctl enable httpd.service</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">7.在两个节点上安装<code>nft-utils</code>以实现支持挂载nfs共享</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# yum install nfs-utils</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node6 ~]# yum install nfs-utils</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">8.安装<code>crmsh</code>,CentOS7默认不带crmsh,需要去网上下载rpm包,我用的是<code>crmsh-2.2.0-7.1.noarch.rpm</code>和<code>crmsh-scripts-2.2.0-7.1.noarch.rpm</code>、<code>python-parallax-1.0.1-10.1.noarch.rpm</code></p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# yum install crmsh-2.2.0-7.1.noarch.rpm crmsh-scripts-2.2.0-7.1.noarch.rpm python-parallax-1.0.1-10.1.noarch.rpm -y</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@node6 ~]# yum install crmsh-2.2.0-7.1.noarch.rpm crmsh-scripts-2.2.0-7.1.noarch.rpm python-parallax-1.0.1-10.1.noarch.rpm -y</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">9.利用crmsh配置资源</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">[root@node5 ~]# crm configure</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><strong>配置VIP资源</strong><br />crm(live)configure# primitive webip ocf:heartbeat:IPaddr ip=’172.16.100.100’ op monitor interval=20s timeout=40s</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><strong>配置NFS资源</strong><br />crm(live)configure# primitive webstore ocf:heartbeat:Filesystem params device=’172.16.0.254:/www/htdocs’ directory=’/var/www/html’ fstype=’nfs’ op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=40s</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><strong>配置WEB资源</strong><br />crm(live)configure# primitive webserver systemd:httpd op start timeout=60s op stop timeout=60s op monitor interval=20s timeout=60s</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><code>因为是两节点集群,需要关闭stonith</code><br />crm(live)configure# property stonith-enabled=false</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">crm(live)configure# commit</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">10.设置这三个服务要同时在一个节点上运行,并且启动顺序一定为<code>VIP -> NFS -> httpd</code></p> <p style="margin-top: 0px;margin-bottom: 1.1em"> 设置三个服务在同一节点上运行有两种方法实现,一种是将所有资源设置到<code>同一个组</code>里面,或者设置<code>排列约束</code>。当然,即设置了组,又定义为了排列约束也是可以的。设置启动顺序那么必须使用<code>顺序约束</code>。</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">设置组</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">crm(live)configure# group webservice webip webstore webserver</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">或排列约束</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">crm(live)configure# colocation webip_with_webstore inf: webip webstore<br />crm(live)configure# colocation webstore_with_webserver inf: webstore webserver</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">顺序约束</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">crm(live)configure# order webip_before_webstore Mandatory: webip webstore<br />crm(live)configure# order webstore_before_webserver Mandatory: webstore webserver<br />crm(live)configure# commit</p> </blockquote> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">验证配置</h2> <p style="margin-top: 0px;margin-bottom: 1.1em">1.首先查看集群状态</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">crm(live)configure# cd 退出到crmsh的主配置界面<br />crm(live)#status 输出status查看集群状态</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703161112-44.gif" alt="Alt text" longdesc="./1.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703161112-60.jpg" title="1459862500307904.jpg" alt="1.jpg" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">一切正常</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">2.打开浏览器,输入VIP地址进行查看。</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703161112-44.gif" alt="Alt text" longdesc="./2.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703161112-33.jpg" title="1459862506240424.jpg" alt="2.jpg" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">测试也是正常的</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">3.将node5节点设置为standby状态,查看服务是否转移成功。</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">crm(live)# node standby node5.redhat.com<br />crm(live)# status</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em"><img src="//cto.wang/usr/uploads/2016/07/20160703161112-44.gif" alt="Alt text" longdesc="./3.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703161112-72.jpg" title="1459862512744221.jpg" alt="3.jpg" /></p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">可以看到node服务转移到了node6节点上</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">4.再次打开浏览器进行测试。</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703161112-54.jpg" title="1459862520256712.jpg" alt="2.jpg" /></p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">服务依旧正常,这样就实现了我们高可用的目的。</p> <hr /> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信