Keepalived + Nginx 高可用负载均衡

一、环境

操作系统

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
服务器服务
192.168.1.171nginx1、keepalived(master)
192.168.1.172nginx2、keepalived(backup)
192.168.1.173:8080tomcat1
192.168.1.174:8080tomcat2

所有服务器关闭防火墙与Selinux

systemctl stop firewalld \
&& systemctl disable firewalld \
&& setenforce 0 \
&& sed -i 's/enforcing$/disabled/g' /etc/selinux/config

架构
使用nginx代理tomcat集群,然后keepalived负责检测主nginx的状态,出现异常立即切换备用nginx。
在这里插入图片描述

二、安装

2.1 安装jdk、tomcat

官网下载jdk1.8、tomcat8.5安装包,并解压至173、174的/opt目录下

yum install -y lrzsz

在这里插入图片描述

2.2 安装nginx

在171、172服务器安装nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm \
&& yum install -y nginx

2.3 安装keepalived

在171、172服务器安装keepalived

yum install -y keepalived

三、配置

3.1 配置jdk

编辑173、174的配置文件

vi ~/.bashrc

文本末尾追加内容

export JAVA_HOME=/opt/jdk-1.8
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

刷新生效

source ~/.bashrc

3.2 配置启动tomcat

173服务器

# 修改显示内容
echo "tomcat 1" > /opt/apache-tomcat-8.5.50/webapps/ROOT/index.jsp
# 启动tomcat1
/opt/apache-tomcat-8.5.50/bin/startup.sh

174服务器

# 修改显示内容
echo "tomcat 2" > /opt/apache-tomcat-8.5.50/webapps/ROOT/index.jsp
# 启动tomcat2
/opt/apache-tomcat-8.5.50/bin/startup.sh

3.3 配置nginx

vi /etc/nginx/nginx.conf

171、172服务器nginx配置文件示例

user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;


upstream liuli {
        server 192.168.1.173:8080;
        server 192.168.1.174:8080;
    }
server {
        listen    80;
        location / {
        proxy_pass http://liuli;
        }
        }
}

启动nginx

systemctl start nginx.service \
&& systemctl enable nginx.service

3.4 配置keepalived

参数描述
global_defs全局配置块
router_id运行keepalived机器的唯一标识,通常主机名
vrrp_instancevrrp实例名
state实例状态,只有MASTER 和 BACKUP两种状态,并且需要全部大写。
interface设置实例绑定的网卡
virtual_router_id同一实例下virtual_router_id必须相同
priorityMASTER权重要高于BACKUP 比如BACKUP为99
advert_intMASTER与BACKUP节点间同步检查的时间间隔,单位为秒
authentication验证类型和验证密码。同一vrrp 实例MASTER与BACKUP使用相同的密码才能正常通信。
virtual_ipaddress设置虚拟IP,可以有多个IP,每个IP占一行,不需要指定子网掩码。
vi /etc/keepalived/keepalived.conf

Master配置

! Configuration File for keepalived

global_defs {
   router_id 192.168.1.171
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.170
    }
}

Backup配置

! Configuration File for keepalived

global_defs {
   router_id 192.168.1.172
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.170
    }
}

启动keepalived

systemctl start keepalived \
&& systemctl enable keepalived

四、测试

4.1 访问tomcat1

在这里插入图片描述

4.2 访问tomcat2

在这里插入图片描述

4.3 访问nginx1

在这里插入图片描述
刷新一下测试负载轮询
在这里插入图片描述

4.4 访问nginx2

在这里插入图片描述
刷新一下测试负载轮询
在这里插入图片描述

4.5 访问虚拟IP

在这里插入图片描述
刷新一下测试负载轮询
在这里插入图片描述

4.6 关闭nginx1服务器

nginx1服务器访问失败
在这里插入图片描述
虚拟IP依旧可用
在这里插入图片描述
在这里插入图片描述

4.7 关闭nginx2服务器,启动nginx1服务器

nginx2访问失败
在这里插入图片描述
虚拟IP访问正常
在这里插入图片描述
在这里插入图片描述
更多Keepalived高级配置
https://www.cnblogs.com/mrlapulga/p/6857294.html
https://www.cnblogs.com/arjenlee/p/9256835.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值