Nginx+Keepalived实现 转载
一、Keepalived简介
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
-----百科资料
二、规划
1
2
3
4
|
OS:CentOS7 Nginx_Master: 192.168.10.128 Nginx主机 Nginx_BackUp: 192.168.10.145 Nginx备机 Nginx_VIP1: 192.168.10.111 虚拟IP地址 |
说明:
虚拟IP是外网访问的IP地址,通过keepalived设置,以及VRRP将虚拟IP地址绑定到主机和备机上,通过权重实现控制。当主机挂掉后,keepalived 释放对主机的控制,备机接管虚拟IP地址。
三、下载相关软件包
1
2
3
|
# yum install -y gcc openssl openssl-devel # wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz ##下载Keeplived # wget http://nginx.org/download/nginx-1.9.4.tar.gz |
四、编译Nginx
①编译
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
|
# groupadd -r nginx # useradd -r -g nginx nginx # tar -zxvf nginx-1.9.4.tar.gz # cd nginx-1.9.4/ # ./configure \ --prefix= /usr \ --sbin-path= /usr/sbin/nginx \ --conf-path= /etc/nginx/nginx .conf \ --error-log-path= /var/log/nginx/error .log \ --http-log-path= /var/log/nginx/access .log \ --pid-path= /var/run/nginx/nginx .pid \ --lock-path= /var/lock/nginx .lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path= /var/tmp/nginx/client/ \ --http-proxy-temp-path= /var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path= /var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path= /var/tmp/nginx/uwsgi \ --http-scgi-temp-path= /var/tmp/nginx/scgi \ --with-pcre # make # make install # /usr/sbin/nginx ##开启nginx |
②简单配置nginx
1
2
3
4
|
# vi /etc/nginx/nginx.conf server { listen 80; server_name www.zhi.com; |
Master:
1
2
3
|
# vi /usr/html/index.html <h1>Success!< /h1 > <p>Welcome to LINUX Keepalived System 1!< /p > |
BackUp:
1
2
3
|
# vi /usr/html/index.html <h1>Success!< /h1 > <p>Welcome to LINUX Keepalived System 2!< /p > |
五、编译Keeplived
1
2
3
|
# tar -zxvf keepalived-1.2.19.tar.gz # cd keepalived-1.2.19 # ./configure --sysconf=/etc --prefix=/usr/local/keepalived |
1
2
|
# make # make install |
六、配置Keeplived
①设置开机自启动并配置服务脚本
1
2
3
|
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ # /etc/init.d/keepalived start # systemctl start keepalived ##以上皆可启动keepalived |
1
2
|
# chkconfig --add keepalived # chkconfig keepalived on |
1
2
3
4
5
6
7
8
9
10
11
12
|
# vi /etc/keepalived/check_nginx.sh ##配置nginx服务监控脚本 ! /bin/bash if [ $( ps -C nginx --no-header | wc -l) - eq 0 ] then /usr/sbin/nginx fi sleep 2 if [ $( ps -C nginx --no-header | wc -l) - eq 0 ] then /etc/init .d /keepalived stop fi # chmod u+x /etc/keepalived/check_nginx.sh |
注:该脚本检测nginx服务正常开启与否,使自动切换keepalived虚拟IP地址。如无该脚本,必须手动执行关闭keepalived方可切换。
②MASTER配置
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
|
# vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { root@localhost ##设置报警邮件地址,可以设置多个 } notification_email_from zhi@zhi.com ##设置邮件发送地址 smtp_server 127.0.0.1 ##设置SMTP-Server地址 smtp_connect_timeout 30 ##设置连接超时时间 router_id LVS_DEVEL ##运行keepalived服务的标识,显示在邮件主题的信息 } vrrp_script check_nginx { script "/etc/keepalived/check_nginx.sh" ##Nginx服务监控脚本 interval 2 ##脚本执行间隔 weight 2 ##脚本执行结果导致的优先级变更 } vrrp_instance VI_1 { state MASTER ##指定keepalived角色为主服务器 interface eno16777736 ##指定HA监测网络的接口 virtual_router_id 51 ##虚拟路由标识,同一个vrrp实例使用唯一的标识 priority 101 ##定义优先级,数字越大,优先级越高 advert_int 1 ##设定MASTER与BACKUP负载均衡器间同步检查的时间间隔,单位秒 authentication { ##设置验证类型和密码 auth_type PASS ##设置验证类型,主要有PASS和AH两种 auth_pass 1111 ##设置验证密码,同一vrrp_instance密码必须相同 } track_script { check_nginx ##检测执行脚本 } virtual_ipaddress { 192.168.10.111 /24 #设置虚拟IP地址,可设置多个虚拟IP地址 } } virtual_server 192.168.10.111 80 { ##设置虚拟服务器,指定虚拟IP地址和服务端口 delay_loop 6 ##设置运行情况检查时间,单位秒 lb_algo rr ##设置负载调度算法,rr即轮询算法 lb_kind NAT ##设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选 nat_mask 255.255.255.0 persistence_timeout 50 ##会话保持时间,单位秒 protocol TCP ##指定转发协议类型,有TCP和UDP两种 sorry_server 127.0.0.1 80 real_server 192.168.10.128 80 { ##配置服务节点1,指定real server的真实IP和端口 weight 1 ##配置服务节点的权值,数字越大,权值越高 HTTP_GET { url { path / status_code 200 ##200状态码,表示服务器已成功处理请求 } connect_timeout 3 ##响应超时时间 nb_get_retry 3 ##重试次数 delay_before_retry 3 ##重试间隔 } } real_server 192.168.10.145 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } |
③BACKUP配置
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
|
# vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from zhi@zhi.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script check_nginx { script "/etc/keepalived/check_nginx.sh" ##Nginx服务监控脚本 interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eno16777736 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx ##检测脚本 } virtual_ipaddress { 192.168.10.111 /24 } } virtual_server 192.168.10.111 80 { delay_loop 6 lb_algo rr lb_kind NAT nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP sorry_server 127.0.0.1 80 real_server 192.168.10.128 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.10.145 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } |
④查看系统日志
1
|
# tail /var/log/messages |
注:这是192.168.10.145的日志(没有同步时间),由于更改配置后没有重启Master,所以BACKUP进行了抢占
Master:
1
2
|
# systemctl restart keepalived.service # tail /var/log/messages |
1
|
# ip addr |
七、测试
浏览器输入www.zhi.com测试
Master:
1
|
# nginx -s stop |
BackUp:
1
|
# ip addr |
虚拟IP地址已切换至备机了
另:可配置nginx+keepalived主主模式,并在后端配置反向代理和负载均衡实现高可用
Nginx+Keepalived实现 转载的更多相关文章
- Centos7+nginx+keepalived集群及双主架构案例
目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...
- Nginx+keepalived 脚本安装主从双机热备自动切换解决方案
Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...
- Nginx+keepalived构建双主负载均衡代理服务器
引言 Nginx是一个高性能的代理服务器,单台Nginx容易出现单点故障,使用keepalived可以实现Nginx的故障转移,保证了网站的高可用性 一.使用Nginx+keepalived的两种方案 ...
- Nginx+keepalived双机热备(主主模式)
之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...
- Nginx+keepalived双机热备(主从模式)
负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...
- Nginx+Keepalived主主负载均衡服务器
Nginx+keepalived主主负载均衡服务器测试实验环境: 主Nginx之一:192.168.11.27主Nginx之二:192.168.11.28Web服务器一:192.168.11.37We ...
- 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层
1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...
- Nginx +keepalived
Nginx +keepalived 配置高可用的Nginx 准备环境: 节点node17,node18 lftp 172.16.0.1:/pub/Sources/6.x86_64/nginx ...
- nginx+keepalived双主高可用负载均衡
实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...
随机推荐
- [Logstash]使用详解(转)
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...
- Review of Segmentation for Medical image analysis
成像方法:X射线,CT,MRI,SPECT,PET等 分割的定义: Image segmentation is a procedure for extracting the region of int ...
- 线上Linux服务器运维安全策略经验分享
线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...
- linux截取指定字符shell cut awk
[root@mylab demo]# echo $var939f61b61978a589d9873e9ea7fdf201b213dec2[root@mylab demo]# echo ${var:0: ...
- C# 统计程序执行时间
随便写写,小马哥勿怪 最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷. 话说马云年轻的时候也是屌丝一枚,有图为证 现 ...
- meta标签的理解
一直习惯的使用meta标签,还真么认真理解过,至少英文意思都还没弄明白... 下面是摘自网络的解释: 互动百科: 元素可提供相关页面的元信息(meta-information),比如针对搜索引擎和更新 ...
- [摘录]quarts :overview
最近项目用了quarts 这个 任务调度器.今天开始详细的学习学习.参考链接:http://www.quartz-scheduler.org/# Quartz Enterprise Job Sched ...
- VS2012发布网站详细步骤
1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击<新建..>,创建新的发布配置文件: 输入你自 ...
- 整理的java的日期DateUtil
package cn.knet.data.untils; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...
- 夺命雷公狗---Thinkphp----5之数据库的链接
我们打开WEB目录下发现了Common和Home以及Runtime这三个文件夹 那么我们第一个目标是完成网站后台的首页吧,那么我们就直接将Home的文件夹复制一份出来,并且改名为Admin这样就可以分 ...