Linux高可用集群(Corosync+Pacemaker)

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux高可用集群(Corosync+Pacemaker)

技术小胖子 2017-11-02 20:26:00 浏览1684
展开阅读全文

说在前面:

   这个编辑器也太霸道了,,两个浏览器,,一个不能粘贴,一个不能上图,只能保存草稿之后切换,  t_0004.gif

   造孽啊! 写博不易,且看且珍惜   [蜡烛]


ntp服务器配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# vim /etc/ntf.conf 加入如下配置
.
# 国家授时中心
restrict 210.72.145.44
restrict 202.120.2.101
restrict 1.cn.pool.ntp.org
# 允许本网络内机器同步
restrict 172.16.43.0 mask 255.255.255.0 nomodify
.
server 210.72.145.44
server 202.120.2.101
server 1.cn.pool.ntp.org
# 配置完毕  service ntpd restart
# 注意 时间服务器配置后需要等待10-15分钟
# ntpstat 可查看时间服务器状态
# 客户端使用ntpdate来同步时间 (集群中十分常用)


高可用概念:

   采用架构冗余(2台以上机器)

   底层节点信息传递(下图 Messaging/Infrashructrue 层)

   计算机资源管理与协调(下图 Resource Allocation 层)与一身架构设计


高可用架构一览

wKioL1NSOHniJ9ZxAAH4UkK1c5M291.jpg

来自https://www.suse.com/Document


高可用方案

   ML messaging/infrashructrue

   CRM cluster resource manager

   RA resource agent(resorce provider)


   i)  Corosync/OpenAIS [ML] + (Pacemaker,crm) [CRM]

   ii) heartbeat v1 [ML] + haresource [CRM]

   iii)heartbeat v2 [ML] + (crm,crmsh/hb_gui) [CRM]

   iv) Cman+Corosync [ML] + Pacemaker [CRM]

   # 以上方案在功能特点上没有区别,在于易用性


   v) PCS + Conga + Pacemaker + Corosync

   vi) PCS + Pcsd + Pacemaker + Corosync

   # 以上均为全生命周期集群配置


   vii) Cman + RHCS

   # 重量级解决方案


实验配置

   172.16.43.200  master.king.com  <- 主控节点,负责配置集群,但不参与

   172.16.43.1    slave1.king.com  <- 集群节点1

   172.16.43.2    slave2.king.com  <- 集群节点2


实验过程

   i) 主控节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 安装 ansible
yum -y install ansible-1.5.4-1.el6.noarch.rpm
# 配置复制节点互信
ssh-keygen -t rsa
# 此处需要 slave1.king.com 在主控节点上解析
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1.king.com
scp ~/.ssh/id_rsa.pub root@172.16.43.1:/root/.ssh/authorized_keys
# 安装corosync,pacemaker,pcs,crmsh
yum -y install corosync pacemaker
yum -y install pssh-2.3.1-2.el6.x86_64.rpm
yum -y install crmsh-1.2.6-4.el6.x86_64.rpm
# 集群节点项配置
cd /etc/corosync
cp corosync.conf.example corosync.conf
# 编辑配置文件
vim corosync.conf
    totem {
        version: 2
        secauth: on  # 集群节点需要验证才能加入集群
        threads: 0
        interface {
            ringnumber: 0
            bindnetaddr: 172.16.43.0 # 在此网段进行广播
            mcastaddr: 226.94.43.1   # 多播地址
            mcastport: 5405
            ttl: 1
        }
    }
    logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: yes
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
            subsys: AMF
            debug: off
        }
    }
    amf {
        mode: disabled
    }
    service {
        ver:    0
        name:   pacemaker   # 启动corosync时启动pacemaker服务
    }
    aisexec {
        user:   root
        group:  root
    }
# 生成corosync节点验证信息
corosync-keygen

   ii): 集群节点安装corosync + pacemaker + crmsh + pssh 及配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 配置集群节点互信,分别在集群节点1,2上执行
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2.king.com
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1.king.com
.
# 配置管理节点将管理的集群节点信息 /etc/ansible/hosts
[server]
slave1.king.com
slave2.king.com
.
# all 是代表hosts文件中所定义所有集群主机, all 也可换 server当前的意义是等价的
# 安装 corosync pacemaker crmsh pssh 注意crmsh , pssh 没有用yum源
# 本地文件先拷贝在安装的
ansible all -m yum -a 'name=corosync state=present'
ansible all -m yum -a 'name=pacemaker state=present'
ansible all -m copy -a 'src=./crmsh-1.2.6-4.el6.x86_64.rpm dest=/root'
ansible all -m copy -a 'src=./pssh-2.3.1-2.el6.x86_64.rpm dest=/root'
# pssh crmsh的本地安装
ansible all -m command -a 'yum -y install /root/pssh-2.3.1-2.el6.x86_64.rpm'
ansible all -m command -a 'yum -y install /root/crmsh-1.2.6-4.el6.x86_64.rpm'
# 将主控节点配置好的信息同步到集群节点    authkey , corosync 到 slave1,slave2
ansible all -m copy -a 'src=/etc/corosync/authkey dest=/etc/corosync'
ansible all -m file -a 'path=/etc/corosync/authkey mode=400'
ansible all -m copy -a 'src=/etc/corosync/corosync.conf dest=/etc/corosync'
ansible all -m service -a 'name=corosync state=started'
# 更多modual及参数请详见
ansible-doc modualname

   iii): 配置集群资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
crm # 在主控节点中进入crm管理器
crm > status # 查看集群状态
. 图1
# 这里是双节点集群 , 一旦失效就可能导致资源无法转移 , 所以这里设置不需要 隔离设备
crm(live)configure > property stonith-enabled=false
crm(live)configure > property no-quorum-policy=ignore
# 查看设置
. 图2
crm > help # 获得crm菜单帮助
# 使用configure配置主资源 注意 提示符 处的菜单路径
crm(live)configure > primitive webip ocf:heartbeat:IPaddr params ip=172.16.43.88 op monitor interval=30s timeout=20s onfail restart
crm(live)configure > primitive webfile ocf:heartbeat:Filesystem params device='172.16.43.200:/htdocs' directory='/var/www/html' fstype='nfs' op monitor intetval=30s timeout=20s onfail restart
crm(live)configure > primitive webhttp ocf:heartbeat:httpd
crm > status # 查看集群状态, 此时资源处于均衡负载
. 图3
# 将资源加入组实现资源聚合
crm(live)configure > group webserivce webip
crm(live)configure > group webserivce webfile
crm(live)configure > group webserivce webhttp
# 将资源加入排列顺序实现资源启动先后
order order_webip_webfile_webhttp mandatory: webip webfile webhttp
. 图4


wKioL1NSWBOxNLEDAAK0PpsT7DQ752.jpg

图1

wKiom1NSWD-QirOvAAJWdSp4YSw741.jpg

图2

wKioL1NSWBnxY0xaAAOEhI58KSI220.jpg

图3

wKioL1NSWBzxno6JAAOZQNgeRaY365.jpg

图4


  iv): 测试

       .图

wKioL1NSWZ-gqQiGAAVZG9yVXVk685.jpg


   先发出来, 标记  .图 的地方正在编辑上传中....  







     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1398628,如需转载请自行联系原作者




网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注