nginx结合keepalived实现高可用的完整步骤
时间:2019-12-16来源:系统城作者:电脑系统城
前言
为了满足系统的高可用,一般都需要搭建集群。当主机挂掉的时候,我们的系统还可以继续提供服务。当我们使用nginx作为反向代理和动静分离服务器的时候,也是如此。实现系统的高可用性,是我们程序员关注的重点。本文介绍了nginx结合keepalived实现主从模式搭建高可用集群。
前提知识
本文不作过多的nginx相关配置介绍,默认读者已经了解nginx的相关知识。
keepalived的介绍
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
系统架构图
实现步骤
1.环境配置
1.1 安装nginx
安装相关依赖
- yum install pcre-devel zlib zlib-devel openssl openssl-devel
上传解压压缩包
- tar zxvf nginx-1.12.2.tar.gz
创建目录,检测配置
- mkdir -p /usr/local/nginx
- ./configure --prefix=/usr/local/nginx
预编译和安装
- make && make install
启动、停止相关命令
- cd /usr/local/nginx/sbin/
- ./nginx
- ./nginx -s stop
- ./nginx -s start
1.2 安装keepalived
- yum install -y keepalived
2.主机配置
修改keepalived配置文件
- vim /etc/keepalived/keepalived.conf
修改的内容如下
- #新增的配置
- vrrp_script chk_http_port {
- script "/shell/nginx_check.sh" #脚本地址
- interval 2 #检测脚本执行的间隔
- weight 2 #比重
- }
-
- vrrp_instance VI_1 {
- state MASTER #主服务器为MASTER,从服务器为BACKUP
- interface eth0 #网卡
- virtual_router_id 51 #主、备机的virtual_router_id必须相同
- priority 100 #主、备机不同的优先级,主机优先级较大,备机值较小,默认是100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- #虚拟IP地址
- virtual_ipaddress {
- 192.168.126.88
- }
- }
创建编写脚本文件
- mkdir /shell/nginx_check.sh
- vim /shell/nginx_check.sh
脚本文件内容如下
- #!/bin/bash
- A=`ps -C nginx –no-header |wc -l`
- if [ $A -eq 0 ];then
- /usr/local/nginx/sbin/nginx
- sleep 2
- if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
- killall keepalived
- fi
- fi
3.从机配置
修改keepalived配置文件
- vrrp_instance VI_1 {
- state BACKUP #主服务器为MASTER,从服务器为BACKUP
- interface eth0 #网卡
- virtual_router_id 51 #主、备机的virtual_router_id必须相同
- priority 50 #主、备机不同的优先级,主机优先级较大,备机值较小
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- #虚拟IP地址
- virtual_ipaddress {
- 192.168.126.88
- }
- }
4.启动服务
启动
- service keepalived start
查看虚拟IP地址
- ip addr
- 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
- inet 127.0.0.1/8 scope host lo
- inet6 ::1/128 scope host
- valid_lft forever preferred_lft forever
- 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
- link/ether 00:0c:29:4f:31:ce brd ff:ff:ff:ff:ff:ff
- inet 192.168.126.100/24 brd 192.168.126.255 scope global eth0
- inet 192.168.126.88/32 scope global eth0
- inet6 fe80::20c:29ff:fe4f:31ce/64 scope link
- valid_lft forever preferred_lft forever
5.关闭防火墙测试
关闭防火墙
- service iptables stop
- #查看防火墙是否开机自启动
- chkconfig --list | grep iptables
- chkconfig iptables off
登陆虚拟IP地址查看
- http://192.168.126.88/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
相关信息
-
Nginx主机域名配置实现
一、配置多个端口访问不同文件
二、配置不同域名访问不同文件
三、配置不同域名访问同个文件...
2023-03-17
-
Nginx配置-日志格式配置方式
上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....
2023-03-17