自己学习时搭建的,很多参数和功能没有用到,只实现了其功能作用,很简洁,很实用!
nginx 实现对tomcat的负载均衡
keepalived 实现对nginx的高可用
192.168.0.120 (主:master)
192.168.0.121 (副:backup)
192.168.0.204
一、nginx配置负载均衡
更改nginx端口(可能跟apache 80端口冲突)
找到ngixn配置文件,以本机安装为例:/etc/nginx/conf.d/learn.conf
server{
listen ??; #??代表更改后的端口号
server_name ???; #???代表要访问的域名
}
2.keepalived主、备机做3台机器nginx服务的负载均衡
upstream xxx{ server 192.168.0.120:xx; server 192.168.0.121:xx; server 192.168.0.204:xx; #xx代表更改后的端口 } server{ listen xx; #xx代表更改后的端口号 server_name ???; #???代表要访问的域名 location / { proxy_pass http://xxx; #xxx对应上方upstream后内容 } }
至此nginx负载均衡已实现
二、keepalived主备机配置
master配置
! Configuration File for keepalived global_defs { notification_email { root@localhost } notification_email_from root@localhost smtp_server localhost smtp_connect_timeout 30 router_id t-0-120 } vrrp_instance mylvs { state MASTER virtual_router_id 155 interface enp0s3 mcast_src_ip 192.168.0.120 priority 100 advert_int 3 nopreempt smtp_alert lvs_sync_daemon_interface enp0s3 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.0.155 } }
PS*参数讲解在最后
backup配置
基本同上 修改以下几处
router_id hostname
state BACKUP
priority 80(比上面低就行了) *priority 取值(0-250)
配置完成,重启keepalived服务
可以执行命令 ip a 观察VIP绑定在那台机器上.
至此,nginx+keepalived 实现负载均衡+高可用配置完成
三、编写检测脚本(想偷懒就看一下)
(放于全局变量下方)
vrrp_script chk_http_port { #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等 script "/xx/xx.sh #这里通过脚本检测 interval 2 #脚本执行间隔,每2s检测一次 weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5 fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间) rise 1 #检测1次成功就算成功。但不修改优先级 }
**!/bin/bash** counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then /usr/sbin/nginx sleep 2 counter=$(ps -C nginx --no-heading|wc -l) if [ "${counter}" = "0" ]; then service keepalived stop fi fi
该脚本检测ngnix的运行状态,并在nginx进程不存在时尝试重新启动ngnix,如果启动失败则停止keepalived,准备让其它机器接管。
监控脚本如下(master和backup都要有这个监控脚本)
上面keepalived参数介绍可以参考xyang0917大神写的:Keepalived安装与配置 (CSDN博客搜索)