目录
知识点1:网站流量分析指标
什么是pv?
什么是uv?
什么是IP?
知识点2:正向代理和反向代理
知识点3:负载均衡实验
IP地址规划:
实验拓扑图
知识点4:负载均衡策略
1、请求轮询
2、增加权重
3、最少连接数
4、ip_hash 策略
知识点1:网站流量分析指标
什么是pv?
PV(page view),即页面浏览量,通常是衡量一个网络新闻频道或网站的主要指标
什么是uv?
UV(unique visitor),指的是访问某个站点或点击某个网站的不同ip地址的人数
在同一天内,uv只记录第一次进入网站的具有独立IP的访问者,在同一天内再次访问该网站则不计数
什么是IP?
IP表示拥有特定唯一IP地址的计算机访问您的网站的次数,
###########################################################################################
知识点2:正向代理和反向代理
正向代理:
代理的对象为客户
代理清楚知道客户要访问的目标
反向代理:
代理的对象为服务器
代理不知道客户要访问的目标
知识点3:负载均衡实验
IP地址规划:
load balance 负载均衡服务器:192.168.44.132
web1 真实web服务器 :192.168.44.166
web2 真实web服务器:192.168.44.141
web3 真实web服务器:192.168.44.205
实验拓扑图
首先在web1,web2,web3,三台web服务器安装nginx软件,使用一键安装nginx脚本安装
一键安装nginx脚本:
[root@web1 ~]# cat onekey_install_nginx.sh #!/bin/bash#解决软件的依赖关系,需要安装的软件包
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim geoip geoip-devel wget -y#新建liming用户和组
id liming || useradd liming -s /sbin/nologin#下载nginx软件
mkdir /liming99 -p
cd /liming99
wget https://nginx.org/download/nginx-1.21.6.tar.gz#解压软件
tar xf nginx-1.21.6.tar.gz
#进入解压后的文件夹
cd nginx-1.21.6#编译前的配置
./configure --prefix=/usr/local/scliming99 --user=liming --group=liming --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_gunzip_module#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));thenexit
fi
#编译
make -j 2
#编译安装
make install#修改PATH变量
echo "PATH=$PATH:/usr/local/scliming99/sbin" >>/root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc#firewalld and selinux#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld#临时停止selinux和永久停止selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config#开机启动
chmod +x /etc/rc.d/rc.local
echo "/usr/local/scliming99/sbin/nginx" >>/etc/rc.local#修改nginx.conf的配置,例如:端口号,worker进程数,线程数,服务域名sed -i '/worker_processes/ s/1/2/' /usr/local/scliming99/conf/nginx.conf
sed -i '/worker_connections/ s/1024/2048/' /usr/local/scliming99/conf/nginx.conf
sed -i -r '36c \\tlisten 80;' /usr/local/scliming99/conf/nginx.conf
sed -i -r '37c \\tserver_name www.liming.com;' /usr/local/scliming99/conf/nginx.conf#killall nginx进程
killall -9 nginx#启动nginx
/usr/local/scliming99/sbin/nginx
修改web服务首页index.html
[root@web1 html]# cat index.html
this is nginx-web1 192.168.44.166
[root@web2 html]# cat index.html
this is nginx-web2 192.168.44.141
[root@web3 html]# cat index.html
this is nginx-web3 192.168.44.205
修改load balance 负载均衡服务器nginx的配置文件nginx.conf
在http块里面定义一个负载均衡器,然后创建一个路由规则,使用创建的upstream节点
# 定义上游服务器集群,定义一个负载均衡器upstream myweb1{server 192.168.44.166;server 192.168.44.141;server 192.168.44.205;}server {listen 80;location / {# 使用myweb1分配规则,即刚才定义的upstream节点proxy_pass http://myweb1;
修改完配置文件以后刷新一下nginx服务,然后再访问load balance服务器就会将流量采用轮询的方式分发到三台真实web服务器上面
############################################################################################
知识点4:负载均衡策略
1、请求轮询
依次转发给配置的服务器,即上个实验,默认是以轮询的方式来分发流量访问
2、增加权重
使用服务器权重,还可以进一步影响ngixn负载均衡算法,谁的权重越大,分发到的请求就越多
修改负载均衡服务器配置文件
# 定义上游服务器集群,定义一个负载均衡器upstream myweb1{server 192.168.44.166 weight=3;server 192.168.44.141 weight=1;server 192.168.44.205 weight=1;}server {listen 80;location / {# 使用myweb1分配规则,即刚才定义的upstream节点proxy_pass http://myweb1;}
接下来访问负载均衡服务器,它会根据权重的多少来分发流量,权重越大,分发到的请求就越多
############################################################################################
3、最少连接数
在连接负载最少的情况下,nginx会尽量避免过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载
轮询法不能识别在给定的时间里保持了多少连接,因此可能发生,服务器B服务器收到的连接比服务器A少但是它已经超载,比如B服务器虽然收到的连接数少,但是都保持连接,没有断开,A服务器虽然收到的连接数多,但是实际大都断开连接,这时候就需要优先选择活跃连接数最少的服务器
# 定义上游服务器集群,定义一个负载均衡器upstream myweb1{least_conn;server 192.168.44.166;server 192.168.44.141;server 192.168.44.205;}server {listen 80;location / {# 使用myweb1分配规则,即刚才定义的upstream节点proxy_pass http://myweb1;}
############################################################################################
4、ip_hash 策略
每个请求按访问的ip分配hash,即一个客户端第一次请求nginx后,会分配到hash,下次改客户端请求 ##的结果还是一样的,不会改变,解决session问题。
# 定义上游服务器集群,定义一个负载均衡器upstream myweb1{ip_hash;server 192.168.44.166;server 192.168.44.141;server 192.168.44.205;}server {listen 80;location / {# 使用myweb1分配规则,即刚才定义的upstream节点proxy_pass http://myweb1;}