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

[经验分享] OpenStack HA集群3

[复制链接]

尚未签到

发表于 2018-5-31 08:17:29 | 显示全部楼层 |阅读模式
  节点间主机名必须能解析
  [root@controller1 ~]# cat /etc/hosts
  192.168.17.149  controller1
  192.168.17.141  controller2
  192.168.17.166  controller3
  192.168.17.111  demo.open-stack.cn
  各节点间要互信,无密码能登录
  [root@controller1 ~]# ssh-keygen -t rsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa):
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in /root/.ssh/id_rsa.
  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  20:79:d4:a4:9f:8b:75:cf:12:58:f4:47:a4:c1:29:f3 root@controller1
  The key's randomart image is:
  +--[ RSA 2048]----+
  |      .o. ...oo  |
  |     o ...o.o+   |
  |    o +   .+o .  |
  |     o o +  E.   |
  |        S o      |
  |       o o +     |
  |      . . . o    |
  |           .     |
  |                 |
  +-----------------+
  [root@controller1 ~]# ssh-copy-id controller2
  [root@controller1 ~]# ssh-copy-id controller3
  配置YUM源
  # vim /etc/yum.repos.d/ha-clustering.repo
  [network_ha-clustering_Stable]
  name=Stable High Availability/Clustering packages (CentOS-7)
  type=rpm-md
  baseurl=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/
  gpgcheck=0
  gpgkey=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-7/repodata/repomd.xml.key
  enabled=1
  这个YUM源可能会冲突,先enabled=0,如果剩下一个crmsh包,再enabled=1打开后安装
  Corosync下载地址,目前最新版本2.4.2
  http://build.clusterlabs.org/corosync/releases/
  http://build.clusterlabs.org/corosync/releases/corosync-2.4.2.tar.gz
  [root@controller1 ~]# ansible controller -m copy -a "src=/etc/yum.repos.d/ha-cluster.repo dest=/etc/yum.repos.d/"
  安装软件包
  # yum install pacemaker pcs resource-agents -y cifs-utils quota psmisc corosync fence-agents-all lvm2 resource-agents
  #  yum install crmsh  -y
  启动pcsd,并确认启动正常
  # systemctl enable pcsd
  # systemctl enable corosync
  # systemctl start pcsd
  # systemctl status pcsd
  [root@controller2 ~]# pacemakerd -$
  Pacemaker 1.1.15-11.el7_3.2
  Written by Andrew Beekhof
  [root@controller1 ~]# ansible controller -m command -a "pacemakerd -$"
  修改hacluster密码
  【all】# echo zoomtech | passwd --stdin hacluster
  [root@controller1 ~]# ansible controller -m command -a "echo zoomtech | passwd --stdin hacluster"
  # passwd hacluster
  编辑corosync.conf
  [root@controller3 ~]# vim /etc/corosync/corosync.conf
  totem {
  version: 2
  secauth: off
  cluster_name: openstack-cluster
  transport: udpu
  }
  nodelist {
  node {
  ring0_addr: controller1
  nodeid: 1
  }
  node {
  ring0_addr: controller2
  nodeid: 2
  }
  node {
  ring0_addr: controller3
  nodeid: 3
  }
  }
  logging {
  to_logfile: yes
  logfile: /var/log/cluster/corosync.log
  to_syslog: yes
  }
  quorum {
  provider: corosync_votequorum
  }
  [root@controller1 ~]# scp /etc/corosync/corosync.conf controller2:/etc/corosync/
  [root@controller1 ~]# scp /etc/corosync/corosync.conf controller3:/etc/corosync/
  [root@controller1 corosync]# ansible controller -m copy -a "src=corosync.conf dest=/etc/corosync"
  创建集群
  使用pcs设置集群身份认证
  [root@controller1 ~]# pcs cluster auth controller1 controller2 controller3 -u hacluster -p zoomtech --force
  controller3: Authorized
  controller2: Authorized
  controller1: Authorized
  现在我们创建一个集群并添加一些节点。注意,这个名字不能超过15个字符
  [root@controller1 ~]# pcs cluster setup --force --name openstack-cluster controller1 controller2 controller3
  Destroying cluster on nodes: controller1, controller2, controller3...
  controller3: Stopping Cluster (pacemaker)...
  controller2: Stopping Cluster (pacemaker)...
  controller1: Stopping Cluster (pacemaker)...
  controller2: Successfully destroyed cluster
  controller1: Successfully destroyed cluster
  controller3: Successfully destroyed cluster
  Sending cluster config files to the nodes...
  controller1: Succeeded
  controller2: Succeeded
  controller3: Succeeded
  Synchronizing pcsd certificates on nodes controller1, controller2, controller3...
  controller3: Success
  controller2: Success
  controller1: Success
  Restarting pcsd on the nodes in order to reload the certificates...
  controller3: Success
  controller2: Success
  controller1: Success
  启动集群
  [root@controller1 ~]# pcs cluster enable --all
  controller1: Cluster Enabled
  controller2: Cluster Enabled
  controller3: Cluster Enabled
  [root@controller1 ~]# pcs cluster start --all
  controller2: Starting Cluster...
  controller1: Starting Cluster...
  controller3: Starting Cluster...
  查看集群状态
  [root@controller1 corosync]# ansible controller -m command -a "pcs cluster status"
  [root@controller1 ~]# pcs cluster status
  Cluster Status:
  Stack: corosync
  Current DC: controller3 (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum
  Last updated: Fri Feb 17 10:39:38 2017        Last change: Fri Feb 17 10:39:29 2017 by hacluster via crmd on controller3
  3 nodes and 0 resources configured
  PCSD Status:
  controller2: Online
  controller3: Online
  controller1: Online
  [root@controller1 corosync]# ansible controller -m command -a "pcs status"
  [root@controller1 ~]# pcs status
  Cluster name: openstack-cluster
  Stack: corosync
  Current DC: controller2 (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum
  Last updated: Thu Mar  2 17:07:34 2017        Last change: Thu Mar  2 01:44:44 2017 by root via cibadmin on controller1
  3 nodes and 1 resource configured
  Online: [ controller1 controller2 controller3 ]
  Full list of resources:
  vip    (ocf::heartbeat:IPaddr2):    Started controller2
  Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
  查看集群状态
  [root@controller1 corosync]# ansible controller -m command -a "crm_mon -1"
  [root@controller1 ~]# crm_mon -1
  Stack: corosync
  Current DC: controller2 (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum
  Last updated: Wed Mar  1 17:54:04 2017          Last change: Wed Mar  1 17:44:38 2017 by root via cibadmin on controller1
  3 nodes and 1 resource configured
  Online: [ controller1 controller2 controller3 ]
  Active resources:
  vip     (ocf::heartbeat:IPaddr2):    Started controller1
  查看pacemaker进程状态
  [root@controller1 ~]# ps aux | grep pacemaker
  root      75900  0.2  0.5 132632  9216 ?        Ss   10:39   0:00 /usr/sbin/pacemaked -f
  haclust+  75901  0.3  0.8 135268 15376 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/cib
  root      75902  0.1  0.4 135608  7920 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/stonithd
  root      75903  0.0  0.2 105092  5020 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/lrmd
  haclust+  75904  0.0  0.4 126924  7636 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/attrd
  haclust+  75905  0.0  0.2 117040  4560 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/pengine
  haclust+  75906  0.1  0.5 145328  8988 ?        Ss   10:39   0:00 /usr/libexec/pacemaker/crmd
  root      75997  0.0  0.0 112648   948 pts/0    R+   10:40   0:00 grep --color=auto pacemaker
  查看集群状态
  [root@controller1 ~]# corosync-cfgtool -s
  Printing ring status.
  Local node ID 1
  RING ID 0
  id    = 192.168.17.132
  status    = ring 0 active with no faults
  [root@controller2 corosync]# corosync-cfgtool -s
  Printing ring status.
  Local node ID 2
  RING ID 0
  id    = 192.168.17.146
  status    = ring 0 active with no faults
  [root@controller3 ~]# corosync-cfgtool -s
  Printing ring status.
  Local node ID 3
  RING ID 0
  id    = 192.168.17.138
  status    = ring 0 active with no faults
  [root@controller1 ~]# corosync-cmapctl | grep members
  runtime.totem.pg.mrp.srp.members.1.config_version (u64) = 0
  runtime.totem.pg.mrp.srp.members.1.ip (str) = r(0) ip(192.168.17.132)
  runtime.totem.pg.mrp.srp.members.1.join_count (u32) = 1
  runtime.totem.pg.mrp.srp.members.1.status (str) = joined
  runtime.totem.pg.mrp.srp.members.2.config_version (u64) = 0
  runtime.totem.pg.mrp.srp.members.2.ip (str) = r(0) ip(192.168.17.146)
  runtime.totem.pg.mrp.srp.members.2.join_count (u32) = 1
  runtime.totem.pg.mrp.srp.members.2.status (str) = joined
  runtime.totem.pg.mrp.srp.members.3.config_version (u64) = 0
  runtime.totem.pg.mrp.srp.members.3.ip (str) = r(0) ip(192.168.17.138)
  runtime.totem.pg.mrp.srp.members.3.join_count (u32) = 1
  runtime.totem.pg.mrp.srp.members.3.status (str) = joined
  查看集群状态
  [root@controller1 ~]# pcs status corosync
  Membership information
  ----------------------
  Nodeid      Votes Name
  1          1 controller1 (local)
  3          1 controller3
  2          1 controller2
  [root@controller2 corosync]# pcs status corosync
  Membership information
  ----------------------
  Nodeid      Votes Name
  1          1 controller1
  3          1 controller3
  2          1 controller2 (local)
  [root@controller3 ~]# pcs status corosync
  Membership information
  ----------------------
  Nodeid      Votes Name
  1          1 controller1
  3          1 controller3 (local)
  2          1 controller2
  [root@controller1 ~]# crm_verify -L -V
  error: unpack_resources:    Resource start-up disabled since no STONITH resources have been defined
  error: unpack_resources:    Either configure some or disable STONITH with the stonith-enabled option
  error: unpack_resources:    NOTE: Clusters with shared data need STONITH to ensure data integrity
  Errors found during check: config not valid
  [root@controller1 ~]#
  [root@controller1 ~]# pcs property set stonith-enabled=false
  [root@controller1 ~]# pcs property set no-quorum-policy=ignore
  [root@controller1 ~]# crm_verify -L -V
  [root@controller1 corosync]# ansible controller -m command -a "pcs property set stonith-enabled=false
  [root@controller1 corosync]# ansible controller -m command -a "pcs property set no-quorum-policy=ignore"
  [root@controller1 corosync]# ansible controller -m command -a "crm_verify -L -V"
  配置 VIP
  [root@controller1 ~]# crm
  crm(live)# configure
  crm(live)configure# show
  node 1: controller1
  node 2: controller2
  node 3: controller3
  property cib-bootstrap-options: \
  have-watchdog=false \
  dc-version=1.1.15-11.el7_3.2-e174ec8 \
  cluster-infrastructure=corosync \
  cluster-name=openstack-cluster \
  stonith-enabled=false \
  no-quorum-policy=ignore
  crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=192.168.17.111 cidr_netmask=24 nic=ens37 op start interval=0s timeout=20s op stop interval=0s timeout=20s monitor interval=30s meta priority=100
  crm(live)configure# show
  node 1: controller1
  node 2: controller2
  node 3: controller3
  primitive vip IPaddr2 \
  params ip=192.168.17.111 cidr_netmask=24 nic=ens37 \
  op start interval=0s timeout=20s \
  op stop interval=30s timeout=20s monitor \
  meta priority=100
  property cib-bootstrap-options: \
  have-watchdog=false \
  dc-version=1.1.15-11.el7_3.2-e174ec8 \
  cluster-infrastructure=corosync \
  cluster-name=openstack-cluster \
  stonith-enabled=false \
  no-quorum-policy=ignore
  crm(live)configure# commit
  crm(live)configure# exit
  查看VIP已绑定在ens37网卡上
  [root@controller1 ~]# ip a
  4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 00:0c:29:ff:8b:4b brd ff:ff:ff:ff:ff:ff
  inet 192.168.17.141/24 brd 192.168.17.255 scope global dynamic ens37
  valid_lft 2388741sec preferred_lft 2388741sec
  inet 192.168.17.111/24 brd 192.168.17.255 scope global secondary ens37
  valid_lft forever preferred_lft forever
  上面指定的网卡名称3个节点必须是同一个名称,否则飘移会出现问题,切换不过去
  [root@controller1 ~]# crm status
  Stack: corosync
  Current DC: controller1 (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum
  Last updated: Wed Feb 22 11:42:07 2017        Last change: Wed Feb 22 11:22:56 2017 by root via cibadmin on controller1
  

  3 nodes and 1 resource configured
  

  Online: [ controller1 controller2 controller3 ]
  

  Full list of resources:
  

   vip    (ocf::heartbeat:IPaddr2):    Started controller1
  查看corosync引擎是否正常启动
  [root@controller1 ~]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log
  [51405] controller1 corosyncnotice  [MAIN  ] Corosync Cluster Engine ('2.4.0'): started and ready to provide service.
  Mar 01 17:35:20 [51425] controller1        cib:     info: retrieveCib:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.xml (digest: /var/lib/pacemaker/cib/cib.xml.sig)
  Mar 01 17:35:20 [51425] controller1        cib:  warning: cib_file_read_and_verify:    Could not verify cluster configuration file /var/lib/pacemaker/cib/cib.xml: No such file or directory (2)
  Mar 01 17:35:20 [51425] controller1        cib:  warning: cib_file_read_and_verify:    Could not verify cluster configuration file /var/lib/pacemaker/cib/cib.xml: No such file or directory (2)
  Mar 01 17:35:20 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.Apziws (digest: /var/lib/pacemaker/cib/cib.0ZxsVW)
  Mar 01 17:35:21 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.ObYehI (digest: /var/lib/pacemaker/cib/cib.O8Rntg)
  Mar 01 17:35:42 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.eqrhsF (digest: /var/lib/pacemaker/cib/cib.6BCfNj)
  Mar 01 17:35:42 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.riot2E (digest: /var/lib/pacemaker/cib/cib.SAqtzj)
  Mar 01 17:35:42 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.Q8H9BL (digest: /var/lib/pacemaker/cib/cib.MBljlq)
  Mar 01 17:38:29 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.OTIiU4 (digest: /var/lib/pacemaker/cib/cib.JnHr1v)
  Mar 01 17:38:36 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.2cK9Yk (digest: /var/lib/pacemaker/cib/cib.JSqEH8)
  Mar 01 17:44:38 [51425] controller1        cib:     info: cib_file_write_with_digest:    Reading cluster configuration file /var/lib/pacemaker/cib/cib.aPFtr3 (digest: /var/lib/pacemaker/cib/cib.E3Ve7X)
  [root@controller1 ~]#
  查看初始化成员节点通知是否正常发出
  [root@controller1 ~]# grep  TOTEM /var/log/cluster/corosync.log
  [51405] controller1 corosyncnotice  [TOTEM ] Initializing transport (UDP/IP Unicast).
  [51405] controller1 corosyncnotice  [TOTEM ] Initializing transmit/receive security (NSS) crypto: none hash: none
  [51405] controller1 corosyncnotice  [TOTEM ] The network interface [192.168.17.149] is now up.
  [51405] controller1 corosyncnotice  [TOTEM ] adding new UDPU member {192.168.17.149}
  [51405] controller1 corosyncnotice  [TOTEM ] adding new UDPU member {192.168.17.141}
  [51405] controller1 corosyncnotice  [TOTEM ] adding new UDPU member {192.168.17.166}
  [51405] controller1 corosyncnotice  [TOTEM ] A new membership (192.168.17.149:4) was formed. Members joined: 1
  [51405] controller1 corosyncnotice  [TOTEM ] A new membership (192.168.17.141:12) was formed. Members joined: 2 3
  检查启动过程中是否有错误产生
  [root@controller1 ~]# grep ERROR: /var/log/cluster/corosync.log
  

运维网声明 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-483256-1-1.html 上篇帖子: OpenStack主要逻辑模块–Keystone身份验证服务 下篇帖子: OpenStack HA集群4
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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