|NO.Z.00013|——————————|^^ 构建 ^^|——|HAC构建.V4|——|5台server|

一、Heartbeat+Nginx
### --- Heartbeat+Nginx
~~~     Heartbeat是Linux-HA工程的一个组件,
~~~     自1999年开始到现在,发布了众多版本,
~~~     是目前开源Linux-HA项目最成功的一个例子,在行业内得到了广泛的应用。 

### --- heartbeat:在HA项目中是实现高可用的,
~~~     在行业内很多应用都在采用heartBeat来构建高可用项目,
~~~     主要有V2/V3两个版本,这里采用V3版本构建
~~~     heartbeat是采用一组脚本的方式去去检测和切换的;
~~~     所以它的原理不像Keepalived负载采用的是VRRP,而在这里以实际构建为主
~~~     10.10.10.11/10.10.10.12:两台nginx服务器去检测以及心跳切换
~~~     10.10.10.100:对于10.10.10.240来说10.10.10.100就是它要访问的外网服务器,
~~~     10.10.10.100:又会在10.10.10.11和10.10.10.12之间检测切换,切换的方式就是采用脚本的方式进行检测切换
~~~     10.10.10.240:用户客户端。
~~~     两台nginx检测主机存活并自动切换,不会造成公司网站的瘫痪。
~~~     可以应用在中小型的门户网站之中,访问量特别小,又不用过多的集群化,
~~~     减少不必要的麻烦,我们可以采用两台nginx去做高可用切换。
~~~     在生产环境中,应该再加一个共享存储,它俩的页面保持一致。
~~~     在负载均衡集群中,生产环境中是必须的。
二、Heartbeat+Nginx实验构建:10.10.10.11环境配置
### --- 10.10.10.11环境配置
### --- 安装nginx;将nnginx-1.2.6.tar.gz安装包导入服务器中

[root@server11 ~]# tar -zxvf nginx-1.2.6.tar.gz
~~~     安装依赖环境//因为我们不需要构建https的协议,所以不需要安装openxcel这个工具包
[root@server11 ~]# yum install -y pcre pcre-devel zlib zlib-devel 
[root@server11 ~]# cd nginx-1.2.6
 
~~~     创建用户
[root@server11 nginx-1.2.6]# useradd -s /bin/nologin -M nginx               // 设置它的启动权限为/bin/nologin不允许远程用户登录 -M:不创建家目录 nginx:用户名

~~~     生成Makefile
[root@server11 nginx-1.2.6]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@server11 nginx-1.2.6]# make && make install
### --- 修改主页文件

[root@server11 nginx-1.2.6]# cd /usr/local/nginx/html/
[root@server11 html]# rm -rf *
[root@server11 html]# vim index.html
aaaaaaaaaaaaaaaaaaaaaa
### --- 启用nginx服务
### --- 通过IE去访问http://10.10.10.11/主机地址正常

[root@server11 html]# /usr/local/nginx/sbin/nginx 
三、Heartbeat+Nginx实验构建:10.10.10.12环境配置
### --- Heartbeat+Nginx实验构建:10.10.10.12环境配置
### --- 安装nginx;将nnginx-1.2.6.tar.gz安装包导入服务器中

[root@server12 ~]#  tar -zxvf nginx-1.2.6.tar.gz
~~~     安装依赖环境//因为我们不需要构建https的协议,所以不需要安装openxcel这个工具包
[root@server12 ~]#  yum install -y pcre pcre-devel zlib zlib-devel 
[root@server12 ~]#  cd nginx-1.2.6
 
~~~     创建用户
[root@server12 nginx-1.2.6]# useradd -s /bin/nologin -M nginx               // 设置它的启动权限为/bin/nologin不允许远程用户登录 -M:不创建家目录 nginx:用户名

~~~     生成Makefile
[root@server12 nginx-1.2.6]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@server12 nginx-1.2.6]# make && make install
### --- 修改主页文件

[root@server12 nginx-1.2.6]# cd /usr/local/nginx/html/
[root@server12 html]# rm -rf *
[root@server12 html]# vim index.html
bbbbbbbbbbbbbbbbbbbbbb
### --- 启用nginx服务
### --- 通过IE去访问http://10.10.10.12/主机地址正常

[root@server12 html]# /usr/local/nginx/sbin/nginx 
四、Heartbeat+Nginx实验构建:10.10.10.11构建heartbeat
### --- Heartbeat+Nginx实验构建:10.10.10.11构建heartbeat
### --- heartbeat默认yum源时没有的,需要第三方的epel源进行安装
### --- 此环境已有下载包,无需使用epel源
### --- 将heartbeat.tar.gz软件包上传到服务器

[root@server11 ~]# tar -zxvf heartbeat.tar.gz 
[root@server11 ~]# cd heartbeat
### --- 安装heartbeat

[root@server11 heartbeat]# yum install -y *
### --- 配置时间同步服务器

[root@server11 ~]# yum install -y ntp
[root@server11 ~]# vim /etc/ntp.conf 
restrict 10.10.10.0 mask 255.255.255.0 nomodify notrap                      // 写入当前的网段地址
#server 0.centos.pool.ntp.org iburst                                        // 注释默认官方的
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
[root@server11 ~]# service ntpd start
Starting ntpd:                                             [  OK  ]
[root@server11 ~]# chkconfig ntpd on
### --- 配置主机名解析

[root@server11 ~]# hostname www.centos1.com
[root@server11 ~]# hostname
www.centos1.com 
[root@server11 ~]# vim /etc/sysconfig/network                               // 修改配置文件,重启后生效
NETWORKING=yes
HOSTNAME=www.centos1.com
### --- 构建DNS,修改配置文件生效
 
[root@server11 ~]# vim /etc/hosts
10.10.10.11 www.centos1.com
10.10.10.12 www.centos2.com
### --- 拷贝出heartBear的配置文件
### --- ha.cf:注配置文件 authkeys:认证文件  haresources:源文件  /etc/ha.d/:heartbeat的默认存放路径

[root@server11 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@server11 heartbeat-3.0.4]# cp -a ha.cf authkeys  haresources  /etc/ha.d/      
~~~     修改配置文件

[root@server11 heartbeat-3.0.4]# cd /etc/ha.d/
[root@server11 ha.d]# dd if=/dev/random bs=512 count=1 | openssl md5        // 生成随机的md5值;比人为写入的更不容易找到规律
(stdin)= 080370eb3fb6e668ad9034cd56e8ca77
[root@server11 ha.d]# vim authkeys 
auth 3                                                                      // 第三个md5认证方式
1 crc
2 sha1 HI!
3 md5 080370eb3fb6e668ad9034cd56e8ca77                                      // 写入刚才生成的md5值
[root@server11 ha.d]# chmod 600 authkeys                                    // authkeys的权限必须是600,若不是600它会认为是不安全,不会让你启动
[root@server11 ha.d]# vim ha.cf 
bcast   eth0            # Linux                                             // 打开网卡心跳检测,单块网卡linux系统怎么配置
#bcast  eth1 eth2       # Linux                                             // 打开网卡心跳检测,多块网卡linux系统怎么配置
#bcast  le0             # Solaris                                           // 打开网卡心跳检测,单块网卡Solaris系统怎么配置
#bcast  le1 le2         # Solaris                                           // 打开网卡心跳检测,多块网卡Solaris系统怎么配置
#       node    nodename ...    -- must match uname -n
node    www.centos1.com
node    www.centos2.com
### --- 打开haresources的源配置文件
[root@server11 ~]# ls /etc/ha.d/resource.d/                                 // 官方写好的脚本文件地址
apache        db2    Filesystem    ICP  IPaddr   IPsrcaddr  LinuxSCSI  MailTo  portblock  SendArp    WAS       Xinetd
AudibleAlarm  Delay  hto-mapfuncs  ids  IPaddr2  IPv6addr   LVM        OCF     Raid1      ServeRAID  WinPopup

[root@server11 ha.d]# vim haresources                                       // 脚本的主要目的是切换IP地址,在最后一行写入如下内容
www.centos1.com IPaddr::10.10.10.100/24/eth0:0                              // 等同于:ifconfig eth0:0 10.10.10.100 netmask 255.255.255.0
五、Heartbeat+Nginx实验构建:10.10.10.12客户端配置
### --- Heartbeat+Nginx实验构建:10.10.10.12客户端配置
### --- 将heartbeat.tar.gz软件包上传到服务器

[root@server12  ~]# tar -zxvf heartbeat.tar.gz 
[root@server12  ~]# cd heartbeat
### --- 安装heartbeat

[root@server12  heartbeat]# yum install -y *
### --- 配置时间同步

[root@server12 ~]# yum install -y ntpdate
[root@server12 ~]# ntpdate -u 10.10.10.11                                   // 同步时间
21 Jan 07:24:10 ntpdate[4443]: adjust time server 10.10.10.11 offset 0.441872 sec 
### --- 配置主机名解析

[root@server12 ~]# hostname www.centos2.com
[root@server12 ~]# hostname
www.centos2.com
[root@server12 ~]# vim /etc/sysconfig/network                               / /修改配置文件,重启后生效
NETWORKING=yes
HOSTNAME=www.centos2.com 
### --- 构建DNS,修改配置文件生效
 
[root@server12 ~]#  vim /etc/hosts
10.10.10.11 www.centos1.com
10.10.10.12 www.centos2.com
### --- 修改配置文件

~~~     在HA-server1下通过scp命令推送配置文件至HA-server2主机中。
[root@server11 ha.d]# scp ha.cf authkeys haresources root@10.10.10.12:/etc/ha.d/
六、Heartbeat+Nginx实验构建:10.10.10.11    10.10.10.12主机下启动服务
### --- Heartbeat+Nginx实验构建:10.10.10.11    10.10.10.12主机下启动服务
### --- 启动两台主机的heartbeat服务

[root@server11 ~]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.
[root@server12 ~]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
Done.
### --- 查看心跳IP地址生成;两个节点中有且只有一个节点会存活ifcfg-eth0:0 ;若出现两个,说明服务不正常。     
### --- 在本地cmd下ping 10.10.10.100; 

[root@server11 ~]# ifconfig
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:FA:34:71  
          inet addr:10.10.10.100  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

七、通过IE验证:http://10.10.10.100/
1、切换验证:断掉HA-server1:10.10.10.11的网络连接
### --- 切换过程中会有网络终端过程

C:\Users\Administrator>ping 10.10.10.100 -t
~~~     来自 10.10.10.100 的回复: 字节=32 时间<1ms TTL=64
~~~     请求超时。                                                                   
~~~     请求超时。
~~~     来自 10.10.10.100 的回复: 字节=32 时间<1ms TTL=64
2、刷新IE浏览器验证:http://10.10.10.100/    :说明切换成功。配置生效。
3、断网恢复,重新验证
### --- 重新为HA-server1连网重新并重启动heartbeat服务

[root@server11 ~]# /etc/init.d/heartbeat restart
4、服务又回到主节点上
~~~     原理上考虑的话:Keepalived的ARRP技术更成熟一些。   
~~~     VRRP有一个资源控制器的功能,会对应的调整资源服务的状态监控,以及对应的启用。
~~~     在这里V3版本已经被剥离出去了;若是出现网掉线,
~~~     服务器宕机,服务出现问题,都是可以进行服务的切换
八、通过服务pkill nignx 停止服务验证
~~~     若是pkill nginx,发现服务并不会自动切换;网页访问不了。
~~~     说明heartbeat检测的是服务的网络通讯的类,而不是服务的是否存活。
~~~     LVS是内核检测,内核若是宕了的情况是切换不了的。
~~~     此处是nginx,nginx宕机和内核是无关的。因为它是在用户空间通信。
~~~     我们可以通过脚本实现检测服务存活状态
### --- 通过服务pkill nignx 停止服务验证

[root@server11 ~]# mkdir /usr/local/script
[root@server11 ~]# mv 80.sh /usr/local/script/
[root@server11 ~]# vim /usr/local/script/80.sh 
#!/bin/bash

PWD=/usr/local/script                                                       // 脚本地址

URL="http://10.10.10.11/index.html"
    
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`                 // 监控网站的返回码,


if [ $HTTP_CODE != 200 ]                                                    // 200表示正常
    then
        service heartbeat stop                                              // 若不是200的情况下,就把heartbeat给
fi
[root@server11 ~]# pkill nginx
[root@server11 ~]# bash /usr/local/script/80.sh                             // 它会直接把heartbeat关闭,服务切换到从节点上
Stopping High-Availability services: Done.
### --- 通过IE访问:http://10.10.10.100/是如下状态    
~~~     这个时间切换是非常快的。和我们随机宕网,宕机时间延迟不同。
~~~     说明主节点主动关闭的情况下会告诉从节点说明:
~~~     主节点要退出了,从节点接管,所以时间差是非常小的。

bbbbbbbbbbbbbbbbbbbbbb 
九、配置nginx服务80服务是否正常,若是不正常会把heartbeat服务关闭(上述5.2的解决方案)
### --- 配置nginx服务80服务是否正常,若是不正常会把heartbeat服务关闭(上述5.2的解决方案)

[root@server11 ~]# /usr/local/nginx/sbin/nginx 
[root@server11 ~]# chmod a+x /usr/local/script/80.sh 
[root@server11 ~]# crontab -e
*/1 * * * * bash /usr/local/script/80.sh                                    // 把脚本启动放在循环里,每个一分钟检查
[root@server11 ~]# service crond restart                                    // 重启定时计划任务
[root@server11 ~]# chkconfig  crond on
[root@server11 ~]# /etc/init.d/heartbeat start                              // 开启heartbeat服务
Starting High-Availability services: INFO:  Resource is stopped
Done.   
### --- 通过IE访问:http://10.10.10.100/
aaaaaaaaaaaaaaaaaaaaaa                                                      / /又恢复到主节点上

### --- 验证:非正常状态,HA-server1下的nginx服务停止
[root@server11 ~]# pkill nginx                                              // pkill杀死nginx服务
### --- 1分钟之后发现切换到HA-server2主机的nginx服务上                      // 或者执行如下操作
[root@server11 ~]# bash /usr/local/script/80.sh

### --- 通过IE浏览器访问地址,发现切换到HA-server2从节点上了。
~~~     说明:配置以上策略:不管是主机网络,主机,应用服务宕掉,都不会影响到业务的终端,会自动切换到从节点上。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(31)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示