centos7+LVS+KeepAlived实现Nginx服务的高可用性

简介:
centos7+LVS+KeepAlived实现Nginx服务的高可用性

说到服务的高可用性,我们前面文章介绍了很多了,在linux下实现的方式有很多种,在此主要介绍Centos7+LVS+Keepalived实现Nginx服务的高可用性,具体见下:

环境介绍

hostname:Nginx01

IP:192.168.6.10

Role:Nginx Server

hostname:Nginx02

IP: 192.168.6.11

Role:Nginx Server

hostname:LVS01

IP: 192.168.6.11

Role:LVS+Keepalived

hostname:LVS02

IP: 192.168.6.12

Role:LVS+Keepalived

VIP:192.168.6.15

我们首先准备安装配置Nginx,我们需要对以下操作

1
2
3
systemctl stop firewalld
systemctl disable firewalld
hostnamectl  set - hostname  Nginx01

clip_image002

关闭selinux配置

1
2
vim  /etc/selinx/config
SELINUX=Disabled

clip_image004

1
yum  install  wget

clip_image006

1
yum  install  nginx

clip_image008

所以我们得先安装依赖repo

http://nginx.org/en/linux_packages.html

clip_image010

1
yum  install  http: //nginx .org /packages/centos/7/noarch/RPMS/nginx-release-centos-7-0 .el7.ngx.noarch.rpm

clip_image012

1
yum  install  -y nginx

clip_image014

安装完成

clip_image016

1
rpm -qa |  grep  nginx

clip_image018

1
find  / -name nginx

clip_image020

安装好后,我们就尝试访问以下Nginx服务,

在访问的前提是我们需要启动nginx 服务

1
systemctl start nginx

clip_image022

接下来我们使用web进行访问

clip_image024

我们首先查看nginx.conf配置文件

1
vim  /etc/nginx/nginx .conf

clip_image026

然后查看nginx默认访问页面显示信息

1
/etc/naginx/conf .d /defautlt .conf

clip_image028

我们为了更好的显示,接下来我们要定义一个显示内容;默认网页路径

1
/usr/share/nginx/html/index .html

clip_image030

1
vim index.html

clip_image032

修改显示内容

clip_image034

接下来我们重启服务

1
systemctl restart nginx

clip_image036

我们同样需要为Nginx02安装nginx安装repo

1
yum  install  http: //nginx .org /packages/centos/7/noarch/RPMS/nginx-release-centos-7-0 .el7.ngx.noarch.rpm

clip_image038

1
yum  install  nginx

clip_image040

clip_image042

安装好后,我们在Nginx01上将nginx上修改的index.html为Nginx02拷贝一份,当然,我们也可以直接使用vim修改Nginx02上的index.html文件

1
scp  /usr/share/nginx/html/index .html 10.10.1.5: /etc/share/nginx/html/index .html

clip_image044

接下来我们回到Nginx server02上,修改index.html文件

1
vim  /usr/share/nginx/html/index .html

clip_image046

修改后保存退出,然后重启服务后,我们通过web尝试访问

1
systemctl restart nginx

clip_image048

接下来就是我们安装配置LVS+Keepalived了

我们首先是安装ipvsadm

1
yum  install  -y ipvsadm

clip_image050

安装完成

clip_image052

接下来安装keepalive

首先是必要条件

1
yum  install  -y gcc openssl openssl-devel

clip_image054

接着安装keepalived

1
yum  install  keepalived

clip_image056

完成安装

clip_image058

接下来我们将keepalived.conf备份一份,所以建议大家都这么做

1
cp  /etc/keepalived/keepalived .conf  /etc/keepalived/keepalived .conf.bak

clip_image060

我们先查看默认的keepalived.conf的配置文件内容

默认的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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
! Configuration File  for  keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path  /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path  /testurl/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl2/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl3/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path  /testurl/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path  /testurl2/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path  /testurl/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl2/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl3/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path  /testurl/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl2/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path  /testurl3/test .jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

clip_image062

清空keepalived.conf配置文件内容

1
echo  > /etc/keepalived/keepalived .conf

clip_image064

粘贴以下内容

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
! Configuration File  for  keepalived
global_defs {
router_id lvs_clu_1
}
virrp_sync_group Prox {
group {
mail
}
}
vrrp_instance mail {
state MASTER
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.6.15
}
}
virtual_server 192.168.6.15 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.10 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.6.11 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

开启路由转发

1
2
cat  /proc/sys/net/ipv4/ip_forward
echo  1 >  /proc/sys/net/ipv4/ip_forward

clip_image066

1
systemctl start keepalived

clip_image068

然后查看服务

1
ipvsadm

clip_image070

接下来我们将LVS02的IPVSADM+Keepalived服务安装

1
2
3
yum  install  -y ipvsadm
yum  install  -y gcc openssl openssl-devel
yum  install  keepalived

clip_image072

clip_image074

因为我们是两台LVS服务器,所以我们需要使用以下命令将LVS01指定目录的配置文件(keepalived.conf)复制到目标服务器上LVS02(10.10.1.7)及覆盖(keepalived.conf)

1
scp  /etc/keepalived/keepalived .conf 192.168.6.13: /etc/keepalived/keepalived .conf

clip_image076

在LVS02上也启用转发路由

1
2
cat  /proc/sys/net/ipv4/ip_forward
echo  1 >  /proc/sys/net/ipv4/ip_forward

clip_image078

修改LVS02的keepalive的相关信息

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
! Configuration File  for  keepalived
global_defs {
router_id lvs_clu_1
}
virrp_sync_group Prox {
group {
mail
}
}
vrrp_instance mail {
state BACKUP
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 50
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.6.15
}
}
virtual_server 192.168.6.15 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.6.10 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.6.11 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

然后也是启动keepalived服务

1
systemctl start keepalived

clip_image080

最后我们需要查看keepalived的运行状态

1
systemct status keepalived

clip_image082

我们发现有错误

1
Tail -f  /var/log/message

clip_image084

1
Ip a show

clip_image086

1
Vim keepalived 修改网卡配置 eth0--->修改为eth016777984

clip_image088

然后重启keepalived

1
2
Systemctl restart keepalived
Systemctl status keepalived

clip_image090

最后我们还需要在两台Nginx主机上配置realserver配置

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
vim realserver
#!/bin/bash
# chkconfig: 2345 85 35
# Description: Start real server with host boot
VIP=192.168.6.15
function  start() {
ifconfig  lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
echo  1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo  2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo  1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo  2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo  “Real Server $( uname  -n) started”
}
function  stop() {
ifconfig  lo:0 down
ifconfig  lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
echo  0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo  0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo  0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo  0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo  “Real Server $( uname  -n) stopped”
}
case  $1  in
start)
start
;;
stop)
stop
;;
*)
echo  “Usage: $0 {start|stop}”
exit  1
esac

clip_image092

1
chmod  a+x realserver

clip_image094

1
2
systemctl start realserver
. /realserver  start

clip_image096

1
scp  realserver 192.168.6.11: /root/realserver

clip_image098

1
ls  -l

clip_image100

1
. /realserver  start

clip_image102

1
2
3
Ipvsadm
systemctl status keepalived
查看lvs02的keepalived的状态

clip_image104

1
2
r然后
Ipvsadm -l

clip_image106

1
ip addr

wKiom1ZK0r-DIMynAAMWmR1taRU088.jpg

wKiom1ZK0sGQksidAAMD0xaTurQ947.jpg

接着我们尝试使用vip进行访问

192.168.6.15

clip_image108

接下来我们将nginx02的nginx服务停用,尝试继续使用vip进行访问

1
Systemctl stop nginx

clip_image110

然后查看ipvsadm状态

clip_image112

1
Systemctl status keepalived

clip_image114

然后我们继续使用vip进行访问

clip_image116

最后我们将nginx02的nginx服务启动,然后查看ipvsadm及keepalived状态

clip_image118

1
keepalived

clip_image120

最后我们再次尝试访问

clip_image122



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

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
8天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
14天前
|
应用服务中间件 nginx
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
|
23天前
|
运维 应用服务中间件 Linux
keepalived详解(三)——keepalived与Nginx配合实战
keepalived详解(三)——keepalived与Nginx配合实战
30 1
|
8天前
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
14 1
|
3天前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在 Linux 中如何使用 HAProxy、Nginx 和 Keepalived 进行负载均衡?
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
|
4天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
20 2
|
6天前
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
16 1
|
21天前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
32 0
|
19天前
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
35 16
|
7月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)