约定的地方

Keepalived+Nginx实现高可用负载均衡

云の彼端·2023-02-13 14:36·278 次阅读

Keepalived+Nginx实现高可用负载均衡

最近刚学习了负载均衡的知识,昨天实战了一下,但是遇到了一些奇怪的问题,查找无方之后,自己探索摸出了原因,所以今天就带大家实战一遍,避免走坑。

提前准备
VMwareCentOS7(两台)

方案规划

VIP IP Nginx port 主从
192.168.100.241 192.168.100.70 80 master
192.168.100.241 192.168.100.3 80 backup

一、虚拟机的网络适配器修改为桥接模式
在这里插入图片描述
二、更新yum

Copy
$ yum upgrade

三、安装依赖

Copy
$ yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

四、安装wget

Copy
$ yum install -y wget

五、下载Nginx、Keepalived

Copy
$ cd /home $ wget http://nginx.org/download/nginx-1.13.0.tar.gz $ wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz

六、解压

Copy
$ tar -zxvf nginx-1.13.0.tar.gz $ tar -zxvf keepalived-2.0.20.tar.gz

七、安装Nginx
① 创建Nginx目录

Copy
$ mkdir /usr/local/nginx

② 进入Nginx解压文件目录,配置安装路径

Copy
$ cd /home/nginx-1.13.0 $ ./configure --prefix=/usr/local/nginx # 编译,执行配置: 考虑到后续安装ssl证书,可以添加下面两个模块 $ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

③ 编译安装

Copy
$ make && make install

④ 设置Nginx开机自启

Copy
$ vi /etc/rc.local #末尾加入 /usr/local/nginx/sbin/nginx

⑤ 修改页面标识

Copy
$ cd /usr/local/nginx/html $ vi /index.html

如图,在h1标签中的nginx后加上-1,另一台的加上-2
在这里插入图片描述
⑥ 启动nignx

Copy
$ ./usr/local/nginx/sbin/nginx

在这里插入图片描述
在这里插入图片描述
八、安装Keepalived
① 创建keepalived目录

Copy
$ mkdir /usr/local/keepalived

② 进入keepalived解压目录,配置安装路径

Copy
$ cd /home/keepalived-2.0.20 $ ./configure --prefix=/usr/local/keepalived

③ 编译安装

Copy
$ make && make install

④ 创建目录,复制keepalived的配置到该目录

Copy
$ mkdir /etc/keepalived $ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

⑤ 将keepalived安装service服务

Copy
$ cp /home/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/ $ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ # 以下两步如果提示已存在则忽略 $ ln -s /usr/local/sbin/keepalived /usr/sbin/ $ ln -s /usr/local/keepalived/sbin/keepalived /sbin/

⑥ 设置keepalived服务开机启动

Copy
$ chkconfig keepalived on

⑦ 编辑keepalived配置(192.168.100.70)

Copy
$ vi /etc/keepalived.conf ! Configuration File for keepalived global_defs { router_id nginx_master } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 ## 检测时间间隔 weight -20 ## 如果条件成立,权重 -20 } vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 58 mcast_src_ip 192.168.100.70 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.100.241 } }

⑧ 编辑keepalived配置(192.168.100.3)

Copy
$ vi /etc/keepalived.conf ! Configuration File for keepalived global_defs { router_id nginx_backup_01 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP interface ens33 virtual_router_id 58 mcast_src_ip 192.168.100.3 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { chk_nginx } virtual_ipaddress { 192.168.100.241 } }

特别注意interface的值要跟你的网卡(外网)名称一样, ip addr 可查看到名称
⑨ 编写Nginx状态检测脚本

Copy
$ touch /etc/keepalived/nginx_check.sh $ vi /etc/keepalived/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

⑩ 给nginx_check.sh加上执行权限

Copy
$ chmod +x /etc/keepalived/nginx_check.sh

⑪ 启动keepalived

Copy
$ service keepalived start Starting keepalived (via systemctl): [ 确定 ]

⑫ 查看日志

Copy
$ tail -fn 200 /var/log/messages

在这里插入图片描述
⑬ 查看网卡信息

Copy
$ ip addr

在这里插入图片描述
⑭ 在浏览器上输入VIP地址
在这里插入图片描述
⑮ 关闭master(192.168.100.70)的Keepalived和Nginx

Copy
$ service keepalived stop $ /usr/local/nginx/sbin/nginx -s stop

⑯ 查看backup(192.168.100.3)的网卡信息

Copy
$ ip addr

在这里插入图片描述
⑰ 刷新浏览器
在这里插入图片描述

posted @   云の彼端  阅读(278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示