nginx+keepalive

1
2
3
4
5
6
7
8
9
10
11
[root@www ~]# yum -y install pcre-devel zlib-devel gcc
 
[root@www ~]# useradd -M -s /sbin/nologin nginx
 
[root@www ~]# tar zxvf nginx-1.16.1.tar.gz -C /usr/src/
 
[root@www ~]# cd /usr/src/nginx-1.16.1/
 
[root@www nginx-1.16.1]# ./configure --prefix=/app/nginx --user=nginx --group=nginx --with-http_stub_status_module
 
[root@www nginx-1.16.1]# make&&make install

  

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# yum -y install kernel-devel openssl-devel popt-deve
[root@localhost ~]# tar -zxvf keepalived-1.2.13.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/keepalived-1.2.13/
[root@localhost keepalived-1.2.13]# ./configure --prefix=/app/keepalived
[root@localhost keepalived-1.2.13]# make &&make install
 
 
[root@localhost ~]# mkdir /etc/keepalived
[root@localhost ~]# cp /app/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ ##复制主配置文件
[root@localhost ~]# cp /app/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ## 复 制启动时需要加载的配置文件
[root@localhost ~]# cp /app/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ## 复 制服务的控制脚本
[root@localhost ~]# cp /app/keepalived/sbin/keepalived /usr/sbin/  ## 复 制keepalived 的命令
[root@localhost ~]# chmod 755 /etc/init.d/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
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
global_defs {
 router_id HA_TEST_R1 ##本服务器的名称,若环境中有多个 keepalived 时,此名称不能一致
}
vrrp_instance VI_1 { ##定义 VRRP 热备实例,每一个 keep 组都不同
 state MASTER ##MASTER 表示主服务器
 interface ens33 ##承载 VIP 地址的物理接口
 virtual_router_id 1 ##虚拟路由器的 ID 号,每一个 keep 组都不同
 priority 100 ##优先级,数值越大优先级越高
 advert_int 1 ##通告检查间隔秒数(心跳频率)
 authentication { ##认证信息
 auth_type PASS ##认证类型
 auth_pass 123456 ##密码字串
 }
 virtual_ipaddress {
 192.168.100.95 ##指定漂移地址(VIP)
 }
}
virtual_server 192.168.100.95 80 { #vip 配置
 delay_loop 2 #每隔 2 秒检查一次 real_server 状态
 lb_algo wrr ##指定 lvs 的调度算法
 lb_kind DR ##lvs 集群模式
 persistence_timeout 60 ##会话保持时间
 protocol TCP ##选择协议
 real_server 192.168.100.21 80 { ##本机地址
 weight 3 ##服务器的权重
 notify_down /etc/keepalived/check.sh ## 指 定 节 点 失 效 后 , 采 用 的 脚 本 ,notify_up 表示节点正常后,采用的脚本
##健康检查方式一共有 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK这些
 TCP_CHECK {
 connect_timeout 10 ##连接超时时间
 nb_get_retry 3 ##重连次数
 delay_before_retry 3 ##重连间隔时间
connect_port 80 ##健康检查端口
 }
 }
 }
 
[root@localhost ~]# vi /etc/keepalived/check.sh  #编辑节点检测失败后执行脚本
#!/bin/bash
/etc/init.d/keepalived stop
echo -e "$(ip a |grep ens33 |grep inet |awk '{print $2}'|awk -F'/' '{print $1}') (nginx) is down on
$(date +%F-%T)" >> /etc/keepalived/check_httpd.log
sleep 5
 
kill -9 `ps -ef|grep nginx|grep master|awk '{print $2}'`<br>kill -9 `ps -ef|grep nginx|grep worker|awk '{print $2}'`
/app/nginx/sbin/nginx
/etc/init.d/keepalived start
 
 
 
[root@localhost ~]# /etc/init.d/keepalived start    #启动服务
  

  

  编辑副服务器配置文件

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
[root@localhost html]# vi /etc/keepalived/keepalived.conf
global_defs {
 router_id HA_TEST_R2 ##本服务器的名称
}
vrrp_instance VI_1 {
 state BACKUP ##BACKUP 表示从服务器
 interface ens33
 virtual_router_id 1
 priority 99 ##优先级,低于主服务器
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 123456
 }
 virtual_ipaddress {
 192.168.100.95
 }
}
virtual_server 192.168.100.95 80{ ##vip 配置
 delay_loop 2 ##每隔 2 秒检查一次 real_server 状态
 lb_algo wrr
 lb_kind DR
 persistence_timeout 60 ##会话保持时间
 protocol TCP
 real_server 192.168.100.22 80 { ##本机地址
 weight 3
 notify_down /etc/keepalived/check.sh
 TCP_CHECK {
 connect_timeout 10 ##连接超时时间
 nb_get_retry 3 ##重连次数
 delay_before_retry 3 ##重连间隔时间
 connect_port 80 ##健康检查端口
 }
 }
 }
 
[root@localhost html]# vi /etc/keepalived/check.sh    #编辑节点检测失败后执行脚本
#!/bin/bash
/etc/init.d/keepalived stop
echo -e "$(ip a |grep ens33 |grep inet |awk '{print $2}'|awk -F'/' '{print $1}') (nginx) is down on
$(date +%F-%T)" >> /etc/keepalived/check_httpd.log
sleep 5
 
kill -9 `ps -ef|grep nginx|grep master|awk '{print $2}'`<br>kill -9 `ps -ef|grep nginx|grep worker|awk '{print $2}'`
/app/nginx/sbin/nginx
/etc/init.d/keepalived start
 
[root@localhost html]# /etc/init.d/keepalived start #启动keepalived

  

posted @   看见酵母菌  阅读(181)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示