Linux高可用集群(Corosync+Pacemaker)

简介:

说在前面:

   这个编辑器也太霸道了,,两个浏览器,,一个不能粘贴,一个不能上图,只能保存草稿之后切换,  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,如需转载请自行联系原作者




相关文章
|
11月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3491 57
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
3249 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
Linux 数据安全/隐私保护
HTCondor下多台Linux计算集群的搭建
HTCondor下多台Linux计算集群的搭建
HTCondor下多台Linux计算集群的搭建
|
运维 负载均衡 监控
"Linux高可用集群背后的神秘力量:揭秘心跳机制,如何确保服务永不掉线?"
【8月更文挑战第21天】今天探讨Linux高可用集群中的心跳机制——节点间定期发送信号以确认彼此状态的关键技术。它主要用于故障检测、负载均衡及资源接管。示例代码展示如何使用Corosync+Pacemaker配置心跳,确保服务连续性与可靠性。正确配置心跳机制能够显著提升系统的稳定性。
426 1
|
Linux 网络安全
|
存储 监控 关系型数据库
在Linux中,如何设计一个高可用数据库系统?
在Linux中,如何设计一个高可用数据库系统?
|
存储 分布式计算 负载均衡
在Linux中,什么是集群,并且列出常见的集群技术。
在Linux中,什么是集群,并且列出常见的集群技术。
|
负载均衡 监控 算法
在Linux中,如何配置和管理LVS集群?
在Linux中,如何配置和管理LVS集群?
|
存储 运维 监控
在Linux中,心跳机制在Linux高可用集群中作用是什么?
在Linux中,心跳机制在Linux高可用集群中作用是什么?
|
消息中间件 Java Kafka
Linux——Kafka集群搭建
Linux——Kafka集群搭建
188 0