Nginx+keepalived主从双机热备自动切换解决方案
测试环境如下:
系统:Ceentos 6.4 64位
主nginx服务器:192.168.122.5
备nginx服务器:192.168.122.6
VIP:192.168.122.15
一、Nginx+keepalived 安装—脚本安装
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
|
#!/bin/bash
for i in $(rpm -q gcc gcc-c++ kernel-devel openssl-devel zlib-devel popt-devel popt-static libnl-devel wget make | grep 'not installed' | awk '{print $2}' )
do
yum -y install $i
done
[ -d /root/software ]
[ "$?" != 0 ] && mkdir /root/software
cd /root/software
[ !-e pcre-8.33. tar .gz ] && wget ftp : //ftp .csx.cam.ac.uk /pub/software/programming/pcre/pcre-8 .33. tar .gz
tar -zxvf pcre-8.33. tar .gz
cd pcre-8.33
. /configure
make && make install
echo $? || [ $? != 0] || echo " installation pcrefailed" || exit 1
cd /root/software
[ ! -e nginx-1.2.9. tar .gz ] && wget http: //nginx .org /download/nginx-1 .2.9. tar .gz
tar -zxvf nginx-1.2.9. tar .gz
cd nginx-1.2.9
. /configure--prefix = /usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module--with-http_gzip_static_module
make && make install
echo $? || [ $? != 0] || echo " installationnginxfailed" || exit 1
cd /root/softwarae
[ ! -e keepalived-1.2.4. tar .gz ] &&wget http: //www .keepalived.org /software/keepalived-1 .2.4. tar .gz
tar -zxvf keepalived-1.2.4. tar .gz
cd keepalived-1.2.4
ln -s /usr/src/kernels/ $( uname -r) /usr/src/kernels/linux
. /configure --prefix= /usr--bindir = /usr/bin--sbindir = /usr/bin--libexecdir = /usr/libexec --localstatedir= /var --libdir= /lib64--infodir = /usr/share/info--sysconfdir = /etc --mandir= /usr/local/share/man--with-kernel-dir = /usr/src/kernels/linux
make && make install
echo $? || [ $? != 0] || print " installation keepalivedfailed" || exit 1
chkconfig --add keepalived
chkconfig --level 345 keepalived on
|
|
二、主Nginx 配置
1
2
3
|
[root@node5 conf]
[root@node5 conf]
[root@node5 conf]
|
1
2
3
|
[root@node5 conf]
[root@node5 conf]
192.168.122.5
|
|
三、主Keepalived配置
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
|
[root@node6 conf]
! Configuration File for keepalived
global_defs {
notification_email {
404060@qq.com
138162@139.com
}
notification_email_from 404060@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/etc/keepalived/chk_nginx.keepalived.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass kuangling
}
track_script {
chk_nginx.keepalived
}
virtual_ipaddress {
192.168.122.15
}
}
|
|
四、备nginx配置
1
2
3
|
[root@node6 conf]
[root@node6 conf]
[root@node6 conf]
|
1
2
3
|
[root@node6 conf]
[root@node6 conf]
192.168.122.6
|
|
五、备keepalived配置
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
|
[root@node6 conf]
! Configuration File for keepalived
global_defs {
notification_email {
404060@qq.com
138162@139.com
}
notification_email_from 404060@qq.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/etc/keepalived/chk_nginx.keepalived.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass kuangling
}
track_script {
chk_nginx.keepalived
}
virtual_ipaddress {
192.168.122.15
}
}
|
|
六、分别在2台nginx服务器上添加检测脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@node6 conf]
status=` ps -C nginx --no-header | wc -l`
if [ $status - eq 0 ]; then
/usr/local/nginx/sbin/nginx
sleep 3
if [ ` ps -C nginx --no-header | wc -l` - eq 0 ]; then
killall keepalived
fi
fi
[root@node6 conf]
|
|
七、测试
分别在2台nginx上启动nginx和keepalived服务,然后分别用ip a 查看ip
本文出自 “&思远晨曦” 博客,请务必保留此出处http://kling.blog.51cto.com/3320545/1240359
nginx+keepalived实现双机热备的高可用
64人收藏此文章, 我要收藏发表于15天前(2013-09-12 23:11) , 已有
664次阅读 ,共
1个评论
这篇文章简单介绍利用keepalived软件,实现对nginx服务器的高可用,即实现故障自动切换。假设你已经安装好nginx,下面介绍keepalived的安装和使用。
keepalived安装
- yum install openssl-devel
- cd /tmp
- wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
- tar xzf keepalived-1.2.2.tar.gz
- cd keepalived-1.2.2
- ./configure
- make && make install
- cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
- cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
- chmod +x /etc/init.d/keepalived
- chkconfig --add keepalived
- chkconfig keepalived on
- mkdir /etc/keepalived
- ln -s /usr/local/sbin/keepalived /usr/sbin/
keepalived的配置
更详细的keepalived配置文件说明可以执行man keepalived.conf查看。
我们假设主服务器IP:192.168.1.103,从服务器ip:192.168.1.101 虚拟ip:192.168.1.110
下面对主服务器的keepalived进行配置:
- vi /etc/keepalived/keepalived.conf
- global_defs {
- notification_email {
- admin@centos.bz
- }
- notification_email_from keepalived@domain.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id LVS_DEVEL
- }
- vrrp_script chk_http_port {
- script "/opt/nginx_pid.sh"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- state MASTER ############ 辅机为 BACKUP
- interface eth0
- virtual_router_id 51
- mcast_src_ip 192.168.1.103
- priority 102 ########### 权值要比 back 高
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- track_script {
- chk_http_port ### 执行监控的服务
- }
- virtual_ipaddress {
- 192.168.1.110
- }
- }
从服务器:
- global_defs {
- notification_email {
- admin@centos.bz
- }
- notification_email_from keepalived@domain.com
- smtp_server 127.0.0.1
- smtp_connect_timeout 30
- router_id LVS_DEVEL
- }
- vrrp_script chk_http_port {
- script "/opt/nginx_pid.sh"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface eth0
- virtual_router_id 51
- mcast_src_ip 192.168.1.101
- priority 101 ##########权值 要比 master 低。。
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- track_script {
- chk_http_port ### 执行监控的服务
- }
- virtual_ipaddress {
- 192.168.1.110
- }
- }
之后分别在主从服务器建立nginx的监控脚本:
- #!/bin/bash
- A=`ps -C nginx --no-header |wc -l`
- if [ $A -eq 0 ];then
- /usr/local/nginx/sbin/nginx
- sleep 3
- if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
- killall keepalived
- fi
- fi
然后分别启动主从服务器的keepalived:
keepalived的测试
我们在主服务器上执行命令ip a,显示如下:
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:aa:a1:e4 brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.103/24 brd 255.255.255.255 scope global eth0
- inet 192.168.1.110/32 scope global eth0
证明主服务器已经绑定了虚拟ip 192.168.1.110
在从服务器上执行命令ip a,显示如下:
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:2b:94:3b brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.101/24 brd 255.255.255.255 scope global eth0
显示表明从服务器上没有绑定vip 192.168.1.110,只有本机真实ip192.168.1.101
下面我们停止主服务器的nginx进程,再看看ip绑定情况:
主服务器的情况:
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:aa:a1:e4 brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.103/24 brd 255.255.255.255 scope global eth0
从服务器的情况:
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 00:0c:29:2b:94:3b brd ff:ff:ff:ff:ff:ff
- inet 192.168.1.101/24 brd 255.255.255.255 scope global eth0
- inet 192.168.1.110/32 scope global eth0
由此可见vip已经指向了从服务器。
分享到:
相关推荐
Nginx+keepalived双机热备(主从模式) Nginx+keepalived双机热备(主从模式)是一种常见的负载均衡技术,用于实现高可用环境和故障转移。该技术通过将Nginx与keepalived结合,实现了前端负载均衡和高可用性。 ...
本片详细记录了Nginx+keepalived双机热备(主从模式)高可用集群方案-完整部署过程,讲解十分到位,可作为线上实操手册。特在此分享,希望能帮助到有用到的朋友。
nginx+keepalive 主从双机热备解决方案是指使用 nginx 和 keepalive 实现主从双机热备的自动切换解决方案。 一、nginx 的安装 在安装 nginx 之前,需要准备好以下安装包: * pcre-8.31.tar.gz * openssl-1.0.1c....
### Nginx+Keepalive 主从双机热备与自动切换解决方案 在现代网络环境中,为了提高服务的稳定性和可用性,通常会采用负载均衡技术和高可用性集群方案。本篇将详细介绍如何通过Nginx 和 Keepalive 实现主从双机热备...
【标题】"keepalived + nginx 主从热备"是一个重要的网络服务高可用性解决方案,主要应用于Web服务器集群,确保在主服务器发生故障时,流量能够无缝切换到备用服务器,保持服务的连续性和稳定性。 【描述】这个...
主要介绍了Docker+keepalived+nginx实现主从热备的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文将详细介绍如何在CentOS7系统上,离线环境下安装nginx和keepalived,以实现主从热备负载均衡反向代理功能。 首先,我们关注的两个主要组件是`nginx`和`keepalived`。`nginx`是一款高性能的HTTP和反向代理服务器...
在商业和开源方案的比较中,商业方案如RoseHA、RoseMirrorHA等虽然可以提供高质量的双机热备解决方案,但成本较高。开源方案则提供了更多的选择和灵活性,包括但不限于heartbeatv1+haresources、heartbeatv2+crm、...
标题所提及的"keepalived双机热备nginx"是一种常见的高可用性(HA)解决方案,用于确保Web服务的持续性和可靠性。在本文中,我们将深入理解这一配置方法。 首先,**keepalived**是一个开源项目,它实现了VRRP协议,...
5. **监控与切换**:当主Nginx服务器出现故障,Keepalived会检测到并将虚拟IP转移到从服务器,从服务器自动启动Nginx服务,接管流量。 6. **故障恢复**:一旦主服务器恢复正常,Keepalived会将虚拟IP重新绑定到主...
为解决这些问题,本文提出采用Nginx的反向代理功能与Keepalived的双机热备机制,以提高图书馆网站的整体性能。 #### Nginx简介 Nginx是一款由俄罗斯开发者Igor Sysoev开发的高性能HTTP服务器和反向代理服务器。其...
Keepalived 是一种高性能的服务器高可用或热备解决方案,可以防止服务器单点故障的发生,而 Nginx 是一个流行的 Web 服务器软件。通过 Keepalived 和 Nginx 的结合,可以实现高可用的 Web 负载均衡。 Keepalived 是...
课程内容包括了Linux基础部分, Linux进阶和高级,Shell编程部分,企业服务管理及Apache服务,LVS+Keepalived负载均衡、无人值守、双机热备。KVM,Zabbix企业级实战,自动化运维体系实战,Gitlab+Ansible+Jenkins...
为保证Nginx服务的高可用性,常采用双机热备方案,通过Keepalived实现故障转移机制。下面,我们将详细解析在生产环境中实现Nginx高可用方案的过程。 ### Nginx高可用的必要性 在分布式系统架构设计中,高可用性是...
在描述中提到,这些依赖包的目的是解决离线环境下安装nginx主从热备和负载均衡软件时,GCC离线安装的问题。Nginx是一个高性能的HTTP和反向代理服务器,而Keepalived则用于实现高可用性,当主服务器出现故障时,能...
- 配置Keepalived以监控Nginx的状态,并在故障发生时自动切换至备用节点。 - 使用`check_http`或`check_tcp`进行健康检查。 - 配置文件通常位于`/etc/keepalived/keepalived.conf`。 #### 三、后端服务器 - **...
13、 部署方面使用LVS + keepalived + Nginx实现了双机主备、双主热备,实现了一个高可用的系统架构。 14、 项目开发采用团队式的开发,统一使用Maven私服构建项目,使用统一的SVN服务进行代码的管理。 【课程内容...
2. **Keepalived**:通过VRRP(虚拟路由冗余协议)实现主备代理服务器的热备,当主服务器出现故障时,可以快速切换到备用服务器,保持服务连续性。 3. **LNMP架构**:Linux + Nginx + MySQL + PHP,是常见的Web服务...