使用两台虚拟机部署nginx:
安装依赖包:
# yum install gcc gcc-c++ openssl-devel pcre-devel zlib-devel
上传源码包到root下:
nginx-1.12.2.tar.gz
解压并进入nginx:
# tar zxf nginx-1.12.2.tar.gz
# cd nginx-1.12.2
编译并安装:
# ./configure && make && make install
启动nginx:
# /usr/local/nginx/sbin/nginx
查看80端口是否启动成功:
# netstat -lptnu | grep 80
启动成功查看网页是否显示nginx:
安装keepalived:
# yum install keepalived
修改其配置文件:
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "pidof nginx"
interval 2
weight 20
}
vrrp_instance check_nginx {
state BACKUP
interface ens37
virtual_router_id 98
priority 99
virtual_ipaddress {
192.168.197.100/24
}
track_script {
check_nginx
}
}
启动keepalived:
# systemctl start keepalived
查看是否配置成功:
# ip a
关闭第一台nginx:
# netstat -lptnu |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3631/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1080/sshd
tcp6 0 0 :::22 :::* LISTEN 1080/sshd
# kill 3631
# netstat -lptnu |grep 80
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1080/sshd
tcp6 0 0 :::22 :::* LISTEN 1080/sshd
进行测试:查看 nginx VIP 是否跳转
nginx 常见的负载均衡有哪几种:
1、轮询(默认)
轮询是默认的方式,轮询的方法是通过按照时间顺序将请求往不同的后端服务器发送,来缓解服务器的压力。如果后台服务器上某一台宕机了,它可以自动剔除。缺点:可靠性低和负载分配不均衡。适用于图片服务器和静态页面服务器集群。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.159.10 weight=10;
server 192.168.159.11 weight=10;
}
3、ip_hash
根据每个请求的ip的hash结果分配,因此每个固定ip能访问到同一个后端服务器,可以解决session问题。
例如:
upstream resinserver{
ip_hash;
server 192.168.159.10:8080;
server 192.168.159.11:8080;
}
4、fair(第三方)
按照后端服务器的相应时间来分配请求,时间短的优先分配。
例如:
upstream resinserver{
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按照访问url的hash结果来分配请求,每个固定的url访问同一个后端服务器。如果后端服务器是缓存时效率高。
例如:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法:
upstream resinserver{
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
tips:
upstream resinserver{ #定义负载均衡设备的IP及设备状态
ip_hash;
server 127.0.0.1:8000 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6801;
server 127.0.0.1:6802 backup;
}
Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器,可以做七层的转发 URL和目录的转发都可以做:
nginx工作在网络的第7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等
nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通
nginx安装和配置比较简单,测试起来也很方便
nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。