nginx实现负载均衡

本文详细介绍了负载均衡的概念、作用及常见的负载均衡算法,如轮询、IP哈希和最小连接数。重点讲解了如何利用Nginx搭建负载均衡器,包括Nginx的健康检查、编译安装步骤以及配置负载均衡模块。通过实例演示了如何配置Nginx以将请求分发到多个后端服务器,并进行了测试验证。
摘要由CSDN通过智能技术生成

目录

一、什么是负载均衡?

二、为什么需要负载均衡?

三、负载均衡的算法

1.round-robin

2.ip-hash

3.least-connected

四、负载均衡的健康检查

五、简介nginx作负载均衡

六、编译安装nginx

1.准备工作

2.编译安装nginx

3.配置nginx里的负载均衡功能

4.测试


一、什么是负载均衡?

负载均衡就是将用户的访问请求均衡的分散到后端真正提供服务器的机器上。

负载均衡器就是实现负载均衡功能的一台机器

二、为什么需要负载均衡?

负载均衡能够将大量的服务请求比较均匀的分散到后端,不会导致某些机器访问量过大,而某些机器又没有访问量。

三、负载均衡的算法

1.round-robin

轮询,对应用服务器的请求以循环方式分发,可以加权轮询,默认情况下所有的服务器的权重值都是1,权重值越大,优先级越高

2.ip-hash

一个散列函数用于确定应该为下一个请求选择哪个服务器,基于客户端的ip地址做负载均衡,相同的ip地址转发到同一个服务器

3.least-connected

最小连接数,下一个请求被分配给活动连接数最少的服务器

四、负载均衡的健康检查

健康检查分为主动和被动,主动就是负载均衡器每隔多长时间主动去探测服务器是否还正常工作,被动就是负载均衡器分配请求给服务器,没有得到响应。

五、简介nginx作负载均衡

http://nginx.org/en/docs/http/load_balancing.html

接下来的实验是使用nginx来实现负载均衡功能,nginx是一个web服务器,可实现http功能,但是nginx也可以对http访问进行负载均衡。

nginx和lvs都是比较经典的开源免费的实现负载均衡的软件。

六、编译安装nginx

1.准备工作

准备一台全新的centos机器作负载均衡器

IP:192.168.10.227        主机名:load-balancer1

#关闭防火墙
[root@load-balancer1 ~]# service firewalld stop
#设置开机不启动防火墙
[root@load-balancer1 ~]# systemctl disable firewalld

#关闭selinux
[root@load-balancer1 ~]# vim /etc/selinux/config
[root@load-balancer1 ~]# vim /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

#修改selinux需要重启服务
[root@manager ~]# reboot

2.编译安装nginx

[root@load-balancer1 ~]# vim onekey_install_nginx_v10.sh
[root@load-balancer1 ~]# cat onekey_install_nginx_v10.sh 

#解决软件的依赖关系,需要安装的软件包
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim wget

#新建用户和组
id  sanchuang || useradd sanchuang -s /sbin/nologin

#下载nginx软件
mkdir  /sanchuang99 -p
cd /sanchuang99
wget  http://nginx.org/download/nginx-1.21.1.tar.gz

#解压软件
tar xf nginx-1.21.1.tar.gz
#进入解压后的文件夹
cd nginx-1.21.1

#编译前的配置
./configure --prefix=/usr/local/scsanchuang99  --user=sanchuang --group=sanchuang  --with-http_ssl_module   --with-threads  --with-http_v2_module  --with-http_stub_status_module  --with-stream

#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));then
  exit
fi
#编译
make -j 2
#编译安装
make  install

#修改PATH变量
echo  "PATH=$PATH:/usr/local/scsanchuang99/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/scsanchuang99/sbin/nginx" >>/etc/rc.local
#运行安装的脚本
[root@load-balancer1 ~]# bash onekey_install_nginx_v10.sh

#切换用户,加载修改的PATH变量
[root@load-balancer1 ~]# su - root

#查看nginx命令
[root@load-balancer1 ~]# which nginx
/usr/local/scsanchuang99/sbin/nginx

#启动nginx
[root@load-balancer1 ~]# nginx

#查看nginx进程
[root@load-balancer1 ~]# ps aux|grep nginx
root         952  0.0  0.1  44580   820 ?        Ss   15:57   0:00 nginx: master process /usr/local/scsanchuang99/sbin/nginx
sanchua+     954  0.0  0.2  77128  2028 ?        S    15:57   0:00 nginx: worker process
root        7258  0.0  0.1  12344  1108 pts/0    S+   16:37   0:00 grep --color=auto nginx

#查看nginx的端口
[root@load-balancer1 ~]# ss -anplut|grep nginx
tcp     LISTEN   0        128              0.0.0.0:80            0.0.0.0:*       users:(("nginx",pid=954,fd=8),("nginx",pid=952,fd=8))

3.配置nginx里的负载均衡功能

#进入nginx的安装目录
[root@load-balancer1 conf]# cd /usr/local/scsanchuang99/
[root@load-balancer1 scsanchuang99]# ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp

#进入配置文件目录
[root@load-balancer1 scsanchuang99]# cd conf/
[root@load-balancer1 conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf

#修改nginx的配置文件
#nginx.conf文件里不止这么点内容,只复制了需要添加的内容相应的位置,#都是注释行,可以不使用
[root@load-balancer1 conf]# vim nginx.conf

http {
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    #定义一个负载均衡器名字叫scweb
    upstream scweb {
            #后端的服务器
            server 192.168.10.230:8889;
            server 192.168.10.231:8889;
            server 192.168.10.232:8889;
        }

    server {
        #监听80端口
        listen       80;
        #域名服务,如果需要使用域名访问,则需要修改hosts文件
        server_name  www.sc.com;
        location / {
             #调用负载均衡器
             proxy_pass http://scweb;
        }


#重新加载配置文件
[root@load-balancer1 conf]# nginx -s reload

4.测试

现在是去访问负载均衡器的IP地址了,默认是监听80端口,所以不需要接端口号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值