实验环境规划:

实验环境:

CentOS release 6.6(Final)  三台

IP地址:

Node1: eth0172.16.31.10/16

Node2:  eth0172.16.31.11/16

Clienteth0172.16.31.12/16


集群架构图 :


.heartbeat特性介绍:

1.实现底层心跳传递

2.启动关闭集群服务

3.工作节点多达16个节点,由一个主节点和其他备节点组成

对称和非对称节点

4.启动时心跳信息由主节点发送

基于UDP的单播(Unicast),UDP的广播(Broadcast),UDP的多播(Multicast),串行线路通信的传播(serial cable)

.配置HA集群的前提:

1、节点之间时间必须同步;

建议使用ntp协议进行;

2、节点之间必须要通过主机名互相通信;

建议使用hosts文件;

通信中使用的名字必须与其节点为上“uname -n”命令展示出的名字保持一致;

3、如果是2个节点,需要仲裁设备;

4、节点之间彼此root用户能基于ssh密钥方式进行通信;

注意:定义为集群服务中的任意资源都不能开机自动启动,因为它们将由CRM启动;

.资源准备

1、选定vip;

2、httpd:

安装好程序;

配置好httpd,本地测试完成;

关闭服务,并确保开机不会自动启动;

3、shared storage:NFS

.节点系统HA的前提条件配置

1.时间同步

参考我的博客:http://sohudrgon.blog.51cto.com/3088108/1598314

2.主机名同步

[root@node1 ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.1 server.magelinux.com server
172.16.31.10 node1.stu31.com node1
172.16.31.11 node2.stu31.com node2

3.仲裁设备为网关172.16.0.1

4.ssh无密钥通信

node1

[root@node1 ~]# ssh-keygen -t rsa -P""
[root@node1 ~]# ssh-copy-id -i.ssh/id_rsa.pub root@node2

测试将node1的hosts文件复制到node2:

[root@node1 ~]# scp /etc/hostsroot@172.16.31.11:/etc/hosts
hosts                                        100%  268     0.3KB/s  00:00

node2

[root@node2 ~]# ssh-keygen -t rsa -P""
[root@node2 ~]# ssh-copy-id -i.ssh/id_rsa.pub  root@node1

测试无密钥通信结果:

[root@node1 ~]# date ;ssh node2 'date'
Thu Jan 1 20:44:09 CST 2015
Thu Jan 1 20:44:09 CST 2015

保证时间一致!

.安装heartbeat程序

1.安装heartbeat程序包组

获取程序包组:

[root@node1 heartbeat2]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm
heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

安装程序包组:

node1和node2都需要安装;

前提条件需要安装如下依赖包:

[root@node1 heartbeat2]# yum install -ynet-snmp-libs libnet PyXML

安装heartbeat套件程序:

[root@node1 heartbeat2]# rpm -ivhheartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpmheartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm
Preparing...               ########################################### [100%]1:heartbeat-pils        ########################################### [ 25%]2:heartbeat-stonith     ########################################### [ 50%]3:heartbeat             ########################################### [ 75%]4:heartbeat-gui         ########################################### [100%]

2.复制配置文件到/etc/ha.d目录下:

[root@node1 heartbeat2]# cd/usr/share/doc/heartbeat-2.1.4/
[root@node1 heartbeat-2.1.4]# cp ha.cfauthkeys haresources /etc/ha.d/

3.配置rsyslog记录heartbeat的日志

[root@node1 ~]# vim /etc/rsyslog.conf
local0.*                                               /var/log/heartbeat.log

拷贝一份到node2:

[root@node1 ~]# scp /etc/rsyslog.confroot@node2:/etc/rsyslog.conf
rsyslog.conf                                  100%3203     3.1KB/s  00:00

4.配置ha.cf主配置文件:

[root@node1 ~]# cat /etc/ha.d/ha.cf |grep-v ^#
#日志记录
logfacility     local0
#组播配置
mcast eth0 225.131.31.23 694 1 0
auto_failback on
#集群节点
node   node1.stu31.com
node   node2.stu31.com
#仲裁设备
ping 172.16.0.1
#是否开启heartbeat v2 版本的CRM,我们使用v1版本的CRM来测试,注释掉。
#crm on

5.定义域共享密钥,认证文件权限必须是600或者400

[root@node1 ~]# openssl rand -hex 6
72907725aaf0
[root@node1 ~]# vim /etc/ha.d/authkeys
auth   2
2      sha1    72907725aaf0

6.配置集群资源

[root@node1 ~]# vim /etc/ha.d/haresources
node1.stu31.com  172.16.31.180/24/eth0/172.16.31.255 httpd

将三个配置文件复制一份拷贝到node2:

[root@node1 ha.d]# scp -p authkeys ha.cfharesources node2:/etc/ha.d/
authkeys                                      100%  684    0.7KB/s   00:00
ha.cf                                         100%   10KB 10.4KB/s   00:00
haresources                                   100%5964     5.8KB/s   00:00

7.确定httpd服务正常

[root@node2 ~]# echo"node2.stu31.com" > /var/www/html/index.html
[root@node1 ~]# echo"node1.stu31.com" > /var/www/html/index.html

启动httpd服务进行测试

[root@node1 ha.d]# service httpd start
Starting httpd:                                           [  OK  ]
[root@node2 ~]# service httpd start
Starting httpd:                                           [  OK  ]

访问测试:

[root@node1 ha.d]# curl http://172.16.31.10
node1.stu31.com
[root@node1 ha.d]# curl http://172.16.31.11
node2.stu31.com

完成后将服务自启动关闭,及停止httpd服务:

node1:
[root@node1 ha.d]# service httpd stop
Stopping httpd:                                           [  OK  ]
[root@node1 ha.d]# chkconfig httpd off
node2:
[root@node2 ~]# service httpd stop
Stopping httpd:                                           [  OK  ]
[root@node2 ~]# chkconfig httpd off

.启动heartbeat集群

1.启动heartbeat服务:

[root@node1 ha.d]# service heartbeat start; ssh node2 'service heartbeat start'
logd is already running
Starting High-Availability services:
2015/01/01_21:10:33 INFO:  Resource is stopped
Done.logd is already running
Starting High-Availability services:
2015/01/01_21:10:33 INFO:  Resource is stopped
Done.

2.访问测试:

[root@nfs ~]# curl http://172.16.31.180
node1.stu31.com

我们关闭node1,在进行测试:

[root@node1 ha.d]# service heartbeat stop
Stopping High-Availability services:
Done.

ip地址切换到了node2:

[root@node2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:58:d3:3e brd ff:ff:ff:ff:ff:ffinet 172.16.31.11/16 brd 172.16.255.255 scope global eth0inet 172.16.31.180/24 brd 172.16.31.255 scope global eth0:0inet6 fe80::a00:27ff:fe58:d33e/64 scope linkvalid_lft forever preferred_lft forever

访问测试:

[root@nfs ~]# curl http://172.16.31.180
node2.stu31.com

测试成功!

转载于:https://blog.51cto.com/sohudrgon/1598704

heartbeat v1版CRM的高可用web集群的实现相关推荐

  1. heartbeat v2版CRM的高可用web集群的实现

    接上一篇文章:heartbeat v1版CRM的高可用集群的实现 架构图: 网络地址规划: 一.关闭heartbeat服务 node1和node2都需要关闭: # service heartbeat ...

  2. 项目 - 基于Docker Swarm的高可用Web集群

    目录 项目名称:基于Docker Swarm的高可用Web集群 项目环境:Docker 20.10.3,CentOS 8.2 (8台 1核1G),Ansible 2.9.17,Keepalived,N ...

  3. 03_项目-基于Docker Swarm的高可用Web集群

    文章目录 项目名称:基于Docker Swarm的高可用Web集群 网络拓扑图 数据流程图 项目环境:Docker 20.10.3,CentOS 8.2(8台 1核1G),Ansible 2.9.17 ...

  4. 项目名称:基于Docker Swarm的高可用Web集群

    文章目录 项目名称:基于Docker Swarm的高可用Web集群 网络拓扑图 数据流程图 项目环境:Docker 20.10.3,CentOS 8.2(8台 1核1G),Ansible 2.9.17 ...

  5. corosync+pacemaker+crmsh的高可用web集群的实现

    网络规划: node1:eth0:172.16.31.10/16 node2: eth0: 172.16.31.11/16 nfs:   eth0: 172.16.31.12/15 注: nfs在提供 ...

  6. 基于nginx的高可用web集群

    文章目录 一.写在前面 编译下载 nginx.conf文件解析 安装好后的操作 日志问题,不同级别的错误 二.环境搭建学习 web服务器配置 错误页面跳转 IO多路复用 在nginx里部署https服 ...

  7. 搭建基于Heartbeat v2+NFS的高可用Web集群

    1.实验环境 HA1:192.168.1.17(RHEL5.8_32bit,web server) HA2:192.168.1.18(RHEL5.8_32bit,web server) NFS:192 ...

  8. k8s.4-kubeadm部署高可用kubernetes集群 1.21

    kubeadm部署高可用kubernetes集群 1.21 ​ 一.kubernetes 1.21发布 1.1 介绍 2021年04月,Kubernetes 1.21正式与大家见面,这是我们 2021 ...

  9. 自建k8s平台-高可用k8s集群

    自建k8s平台-高可用k8s集群 一.前置概念与操作 1.内核升级 3.10内核在大规模集群具有不稳定性 内核升级到4.19+ # 查看内核版本 uname -sr # 0.升级软件包,不升级内核 y ...

最新文章

  1. java取非_java运算符 与()、非(~)、或(|)、异或(^)
  2. 汇编指令mrs_专题1:电子工程师 之 软件】 之 【8.arm指令】
  3. bat实现监测计算机网络连接,断网自动重启网络连接
  4. JNDI 是什么,怎么理解
  5. Cakephp 创建无模型的Controller
  6. java面试 自我介绍_java面试自我介绍
  7. Inferior 1 (process xxx) exited with code 0177
  8. todolist从无到有
  9. c语言 ascii码转成字符串,ASCII码与字符串的相互转换
  10. Vue 解决兄弟组件之间传值问题
  11. 通过 iso 重装阿里云 ECS
  12. 阿里巴巴离职DBA 35岁总结的职业生涯(转)
  13. matlab求26个字母的组合方式,26个字母识别 用matlab实现的
  14. Altera DDR3调试记录
  15. 使用腾讯语音合成技术生成有声书
  16. 1044 火星数字 ——c实现
  17. 全景图剪切程序Sphere2Cube(一张全景生成六张立方体天空盒图Cubmap)
  18. 基于cruise的混合动力商用车仿真,P2并联混动仿真模型可实现并联混动汽车动力性经济性仿真
  19. 求助 android开发中 如果两个控件的id相同 会怎样?如何使用findviewbyid ()寻找到?
  20. 域名欺诈之辩:美国最高法院最近的规定会否改变网站运营的方式?

热门文章

  1. python3菜鸟教程中文-Python3 数据结构
  2. python编程输入标准-Python练习题,,T1.编写程序,输入
  3. mysql udf http.so_MySQL-UDF-HTTP + Express + WebSocket 实现数据库推送
  4. Material-UI使用
  5. angular环境搭建
  6. spring中事务的设计和实现
  7. linux下创建和删除软、硬链接
  8. Java_重载与重写
  9. 使用字符流 创建文件 写入文件 复制文件
  10. python剑指offer 包含min函数的栈