文章目录
一、环境
操作系统
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
服务器 | 服务 |
---|---|
192.168.1.171 | nginx1、keepalived(master) |
192.168.1.172 | nginx2、keepalived(backup) |
192.168.1.173:8080 | tomcat1 |
192.168.1.174:8080 | tomcat2 |
所有服务器关闭防火墙与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_instance | vrrp实例名 |
state | 实例状态,只有MASTER 和 BACKUP两种状态,并且需要全部大写。 |
interface | 设置实例绑定的网卡 |
virtual_router_id | 同一实例下virtual_router_id必须相同 |
priority | MASTER权重要高于BACKUP 比如BACKUP为99 |
advert_int | MASTER与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