负载均衡
实验
实验目的:浏览器输入192.168.17.10/edu/a.html/,负载均衡效果,平均8080和8081端口。
准备 两台tamcat服务器 一台8080端口 一台8081端口
在两台tamcat服务器webapps里面创建 edu文件夹 在建立文档
因之前的8080端口已有edu 现在再8081创建edu并且html文件
配置nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
[root@localhost sbin]# ./nginx -s stop 关闭ngixn
[root@localhost sbin]# ./nginx 启动nginx
[root@localhost sbin]# pwd
/usr/local/nginx/sbin
测试 192.168.17.10/deu/a.html 刷新服务器再切换
负载均衡:(load balance)是将负载分摊到不同的服务单元,既保证服务的可用性,有保证响应足够快,给用户和你好的体验。
再linux下有nginx、LVS、haproxy等等服务可以提共负载均衡服务,而nginx提供了几种分配方式(策略)。
Nginx分配服务策略
1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动刷除。
2、weight:代表权重默认为1,权重越高备份配的客户越多。
例如:
upstream server_pool
server 192.168.5.21:80 weight=5;
server 192.168.5.22:80 weght=10;
3、ip hash:每个请求按访问IP的hash结果分配,这样每个访问固定访问一个后端服务器,可以解决session的问题,例如:
upstream server_pool
ip_hash
server 192.168.5.21:80;
server 192.168.5.22:80;
4、fair(第三方):按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
例如:
upstream server_pool
server 192.168.5.21:80;
server 192.168.5.22:80;
fair
动静分离
linux新建date 里面新建 image和www 文件,两文件存入对应的数据。
配置nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
浏览器输入 192.168.17.10/image/01.jpg/
因配置autoindex on所以会有如下显示。
高可用集群
原理
1、需要2台nginx服务器
2、需要keepalived 2台服务器都需要
3、需要虚拟ip
配置
安装keepalived 两台服务器都需要安装
[root@localhost usr]# yum -y install keepalived
安装位置
[root@localhost /]# cd /etc/
安装后在 etc 生成目录 keepalived 有文件 keepalived.conf
高可用配置(主从配置) 主从都需要
vi keepalived.conf*
lobal_defs { #全局定义
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.17.10 #IP地址为主服务器IP (备服务器 IP不变)
smtp_connect_timeout 30
router_id LVS_DEVEL #访问到主机
}
#此处主要检测nginx服务器是否正常
vrrp_script chk_http_port { #脚本配置
srcipt "/usr/local/src/nginx_check.sh" #脚本
interval 2 #检测脚本执行的间隔 2表示2s
weight 2 #当主服务器宕机 将它的权重减少2
}
vrrp_instance VI_1 { #虚拟全局
state MASTER #备份服务器上将MASTER(主) 改成 BACKUP*(备)
interface ens160 #服务器网卡名称 ip addr可查询
virtual_router_id 51 #主、备机的virtual_router_id必须相同
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每个1s 检测服务器是否宕机
authentication { #权限检验方式 密码1111
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 //VRRP 虚拟IP地址
}
}
检测ngixn是否正常脚本 添加到/usr/local/src/
[root@localhost src]# cat nginx_check.sh
#!/bin/bash
A='ps -c nginx -no-header | wc -l'
if [$A -eq 0 ];then
/usr/local/nginx/sbin/nginx #nginx启动命令位置
sleep 2
if [ 'ps -C nginx --no-header | wc -l' -eq 0 ];then
killall keepalived #主服务器宕机,杀掉主服务器,备服务器开始
fi
fi
启动 nginx keepalived (主从操作一样)
[root@localhost sbin]# ./nginx -s stop #关闭nginx
[root@localhost sbin]# ./nginx #启动ngixn
[root@localhost sbin]# systemctl start keepalived.service #启动keepalived
[root@localhost sbin]# pwd
/usr/local/nginx/sbin
查看进程 (主从操作一样)
[root@localhost sbin]# ps -ef | grep keepalived
root 8467 1349 0 00:42 pts/0 00:00:00 vi keepalived.conf
root 8789 1 0 01:52 ? 00:00:00 /usr/sbin/keepalived -D
root 8790 8789 0 01:52 ? 00:00:00 /usr/sbin/keepalived -D
root 8791 8789 0 01:52 ? 00:00:00 /usr/sbin/keepalived -D
root 8799 1349 0 01:53 pts/0 00:00:00 grep --color=auto keepalived
[root@localhost sbin]# ps -ef | grep nginx
root 6073 1349 0 2021 pts/0 00:00:00 vi nginx.conf
root 6162 1349 0 2021 pts/0 00:00:00 vi nginx.conf
root 7570 1349 0 2021 pts/0 00:00:00 vi conf/nginx.conf
root 7859 1349 0 2021 pts/0 00:00:00 vi nginx.conf
root 8780 1 0 01:50 ? 00:00:00 nginx: master process ./nginx
nobody 8781 8780 0 01:50 ? 00:00:00 nginx: worker process
root 8801 1349 0 01:53 pts/0 00:00:00 grep --color=auto nginx
[root@localhost sbin]#
测试:192.168.17.50虚拟IP测试
停止主服务器
[root@localhost sbin]# systemctl stop keepalived.service # 停止keepalived
[root@localhost sbin]# cd /usr/local/nginx/sbin
[root@localhost sbin]# ./nginx -s stop #停止nginx
[root@localhost sbin]# ps -ef | grep keepalived
root 8467 1349 0 00:42 pts/0 00:00:00 vi keepalived.conf
root 8935 1349 0 02:09 pts/0 00:00:00 grep --color=auto keepalived
再次测试
备份服务器 IP地址
nginx 实验全部结束
解析配置文件
LVS_SEVEL 可在/etc/hosts/中
如有疑问可联系博主
bingku2016@126.com