设为首页 收藏本站
查看: 1333|回复: 0

[经验分享] Pacemaker集群管理 实现Apache 的高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-24 08:36:24 | 显示全部楼层 |阅读模式
        实验环境:
        系统版本:CentOS release 6.5 (Final)_x64
        node1: ip :192.168.0.233     #写进/etc/hosts文件中
        node2: ip :192.168.0.234
        vip: 192.168.0.183
        注意:1.两台机器务必写静态ip,切记莫用dhcp获取ip,确保两个机器互相能ping通
             2. 先禁用防火墙和SELinux
        一.配置SSH        SSH 是一个方便又安全的用来远程传输文件或运行命令的工具. 在这个文档中, 我们创建ssh key(用 -N 选项)来免去登入要输入密码的麻烦。
        创建一个密钥并允许所有有这个密钥的用户登入
        在node1上操作:
        [iyunv@node1 ~]#  ssh-keygen -t dsa -f ~/.ssh/id_dsa -N""
        [iyunv@node1 ~]# cp .ssh/id_dsa.pub .ssh/authorized_keys
        [iyunv@node1 ~]#  scp -r .ssh node2:
        ok,我们已经做好了双机认证
        二.集群软件安装/配置(两台机器都要做同样的操作)        1.这里,我们用的rpm包安装的,建议使用163源或epel 源进行依赖关系解决:
        epel-release-6-5.noarch               #我用的是epel源,找不到源rpm包的话可以留言给我
        rpm  -ivh    epel-release-6-5.noarch.rpm  #安装
        163源:
        wget  http://mirrors.163.com/.help/CentOS6-Base-163.repo
         
        2.设置Pacemaker源:
        vi  /etc/yum.repos.d/centos.repo  #贴入如下内容
        [centos-6-base]
        name=CentOS-$releasever - Base
        mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
        enabled=1
        #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
         
        3.安装集群软件:
        [iyunv@node1 ~]#  yum makecache          #缓存一下
        [iyunv@node1 ~]# yum install     lvm2-cluster corosync pacemaker pcs  -y     #安装请这样安装,官网文档有点坑,大概八十六个包
         
        4.开始集群设置:
        [iyunv@node1 ~]# /etc/init.d/pcsd  start
26719405_1418889826Sz2x.jpg
       
        [iyunv@node2 ~]# /etc/init.d/pcsd  start
26719405_1418889835Kv15.jpg
       
        ①   设置hacluster用户设置密码。两个节点设置一致        [iyunv@node1 ~]# passwd hacluster
26719405_14188898683Y8y.jpg
       
        [iyunv@node2 ~]# passwd hacluster
       
          26719405_1418889901VEvF.jpg
        ②  配置 Corosync        hacluster 这个我们之前用过的用户就是做统一的集群管理用的,这里配置corosync就是用到这个用户,配置完成后生成corosync.conf 发送到各个节点上hacluster在一个集群中的节点认证的的事情。
        [iyunv@node1 ~]# pcs cluster auth node1node2
        Username: hacluster
        Password:                      #这里输入redhat
        node1: Authorized
        node2: Authorized
         
        [iyunv@node1 ~]# pcs cluster setup --namemycluster   node1 node2
        node1: Updated cluster.conf...
        node2: Updated cluster.conf...
         
        ③   启动我们的集群:
         
        [iyunv@node1 ~]#  pcs cluster start  --all        #启动稍微有点慢,耐心等待
       
         
          26719405_1418889990xEl5.jpg
         
         
         
         
        ④   查看我们创建的集群,节点状态:
        [iyunv@node1 ~]# pcs status
26719405_1418890007aH9q.jpg
       
        [iyunv@node1 ~]#  pcs status corosync
       
          26719405_1418890056nccK.jpg
        [iyunv@node1 ~]# crm_verify -L -V   #查看你会发现很多错误
         
        [iyunv@node1 ~]#  pcs property set stonith-enabled=false  #关掉这些错误
         
        三.开始配置我们的Apache高可用(/)
        ①.添加vip
        首先要做的是配置一个IP地址,不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择 192.168.0.183作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群每30秒检查它一次。

        [iyunv@node1 ~]# pcs   resource create ClusterIPocf:heartbeat:IPaddr2   ip=192.168.0.183cidr_netmask=32 op monitor interval=30s   

        另外一个重要的信息是 ocf:heartbeat:IPaddr2。这告诉Pacemaker三件事情,第一个部分ocf,指明了这个资源采用的标准(类型)以及在哪能找到它。第二个部分标明这个资源脚本的在ocf中的名字空间,在这个例子中是heartbeat。最后一个部分指明了资源脚本的名称。
        [iyunv@node1 ~]# pcs status     #查看我们已经创建好的资源,一个vip现在已经在node1上运行


        26719405_1418890102ZZ1Y.jpg
26719405_1418890140MxHa.jpg
        ②安装Apace
        在继续前,我们需要确保两个节点上都安装了Apache。
        [iyunv@node1 ~]#  yum  -y   install httpd
        [iyunv@node2 ~]#  yum  -y   install httpd

        准备工作,给Apache,写个默认首页:

        [iyunv@node1 ~]# cat <<-END>/var/www/html/index.html
         <html>
         <body>welcometo  node 1 </body>
         </html>
        END
        [iyunv@node2 ~]# cat <<-END>/var/www/html/index.html
         <html>
         <body>welcome to  node 2 </body>
         </html>
        END




        ③开启Apache status URL        为了监控Apache实例的健康状态,并在它挂掉的时候恢复Apache服务,pacemaker使用的资源agent会假设 server-status URL是可用的。查看/etc/httpd/conf/httpd.conf并确保下面的选项没有被禁用或注释掉。,在这里我们直接添加了,默认是注释的。
        注意,两个node的Apache都要添加,切勿偷懒
        vi /etc/httpd/conf/httpd.conf
        <Location /server-status>
          SetHandler server-status
           Orderdeny,allow
           Denyfrom all
           Allowfrom 127.0.0.1
        </Location>
        ⑤  Apache 添加进我们的集群中
        [iyunv@node1~]#pcs resource create Webocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf       statusurl="http://localhost/server-status"op monitor interval=1min
        现在,Apache已经可以添加到集群中了。我们管这个资源叫Web。我们需要用一个叫做apache的OCF脚本,这个脚本在heartbeat这个名字空间里,唯一一个需要设定的参数就是Apache的主配置文件路径,并且我们告诉集群每一分钟检测一次Apache是否运行。

        默认的,所有资源的start,stop和monitor操作的超时时间都是20秒。在很多情况下这个超时周期小于建议超时时间。在本教程中,我们将调整全局操作的超时时间为240秒。
        [iyunv@node1 ~]# pcs resource op defaults timeout=240s
        [iyunv@node1 ~]# pcs resource op defaults
        timeout: 240s
         
                                                                   
        ⑥ 确保资源在同一个节点运行
        (1)为了减少每个机器的负载,Pacemaker会智能地尝试将资源分散到各个节点上面。然而我们可以告诉集群某两个资源是有联系并且要在同一个节点运行(或不同的节点运行)。这里我们告诉集群WebSite只能在有ClusterIP的节点上运行。
        (2)为此我们使用托管约束来强制性的表明WebS和ClusterIP运行在同一节点。“强制性”部分的托管约束使用分数INFINITY(无穷大)来表示。无穷大也表明了如果ClusterIP没有在任何节点运行,那么Web也不能运行。
        [iyunv@node1 ~]# pcs constraintcolocation add Web ClusterIP INFINITY
          26719405_1418890201x110.jpg
         
         
         
       
        在两个节点上启动Apache即可,用vip访问我们写的界面。

        ⑦   控制资源的启动停止顺序
        当Apache启动了,它跟可用的IP绑在了一起。它不知道我们后来添加的IP,所以我们不仅需要控制他们在相同的节点运行,也要确保ClusterIP在Web之前就启动了。我们用添加ordering约束来达到这个效果。我们需要给这个order取个名字(apache-after-ip之类描述性的),并指出他是托管的(这样当ClusterIP恢复了,同时会触发Web的恢复) 并写明了这两个资源的启动顺序。
        [iyunv@node1 ~]# pcs constraint order ClusterIP then Web
26719405_14188902832mUt.jpg
       
        [iyunv@node1 ~]#  pcs constraint     #查看一下我们写的规则
26719405_1418890292rB8P.jpg
       
        ⑧ .指定优先的 Location
        (1)Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。
        (2)同样的,我们给他取一个描述性的名字(prefer-pcmk-1),指明我们想在上面跑WebSite这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:
         
         
        [iyunv@node1 ~]#  pcs constraint   #查看我们写好的规则
26719405_1418890358Ccyo.jpg
       
        如果要看现在的分值,可以用crm_simulate这个命令
        [iyunv@node1 ~]# crm_simulate -sL
26719405_14188903877VP8.jpg
       
        ⑨在集群中手动迁移资源
        [iyunv@node1 ~]#  pcs constraint location Web prefers  node2=INFINITY
       
          26719405_14188904205B7g.jpg
         
         Pacemaker 还有许多强大的功能还未挖掘,请求期待!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-38548-1-1.html 上篇帖子: http 各种状态码的具体含义解释 下篇帖子: 分布式监控报警平台Centreon之:Centreon依赖安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表