负载均衡的配置

负载均衡的工作原理?

在这里准备两个虚拟机,然后将tomcat安装在上面

关闭两个虚拟机的防火墙:

解压tomcat :

然后将压缩包nginx上传到linux系统中,然后解压.进入到这个文件中,

因为nginx是使用C语言写的,所以需要进行编译

1.1     编译安装

将nginx-1.8.0.tar.gz拷贝至linux服务器。

 

解压:

tar -zxvf nginx-1.8.0.tar.gz –C /usr/local/src

cd /usr/local/nginx-1.8.0

 

1、  Configure

注意:进入nginx的解压目录下执行该脚本

./configure --help查询详细参数(参考本教程附录部分:nginx编译参数)

 

参数设置如下:

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

mkdir -p /var/temp/nginx

1、  编译安装

make

make  install

 

安装成功查看安装目录 :

 

   启动nginx

cd /usr/local/nginx/sbin/

./nginx

查询nginx进程:

15098是nginx主进程的进程id,15099是nginx工作进程的进程id

 

注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:

./nginx -c /usr/local/nginx/conf/nginx.conf

如果不指定-c,nginx在启动时默认加载/usr/local/nginx/conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))

 停止nginx

方式1,快速停止:

cd /usr/local/nginx/sbin

./nginx -s stop

此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

 

方式2,完整停止(建议使用):

cd /usr/local/nginx/sbin

./nginx -s quit

此方式停止步骤是待nginx进程处理任务完毕进行停止。

重启nginx

方式1,先停止再启动(建议使用):

对nginx进行重启相当于先停止nginx再启动nginx,即先执行停止命令再执行启动命令。

如下:

./nginx -s quit

./nginx

 

方式2,重新加载配置文件:

当nginx的配置文件nginx.conf修改后,要想让配置生效需要重启nginx,使用-s reload不用先停止nginx再启动nginx即可将配置信息在nginx中生效,如下:

./nginx -s reload

 安装测试

nginx安装成功,启动nginx,即可访问虚拟机上的nginx:

Nginx虚拟主机

早期图片访问用的Nginx

 Nginx反向代理服务器

Conf/nginx.conf

进入nginx/conf目录下,修改nginx.conf配置文件。

upstream tomcat_server{

        server 192.168.200.128:8080;

}

proxy_pass http://tomcat_server;

 

  Nginx负载均衡服务器

upstream tomcat_server{

   server 192.168.200.130:8080 weight=10;

   server 192.168.200.148:8080 weight=20;

}

 

 

搭建nginx备机时候需要使用Keepalived高可用解决方案

什么是Keepalived?

Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障.

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,keepalived将检测到,并将故障的web服务器从系统中剔除,当web服务器工作正常后keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只修复故障的web服务器.

 

安装keepalived---主机

   上传RPM

使用crt工具直接进行上传

   安装Keepalived软件

rpm -ivh keepalived-1.2.13-5.el6_6.i686.rpm

 

   查看安装路径

rpm -ql keepalived

 

 

 

     配置虚拟IP---vip

编辑 keepalived.conf配置文件。

1、  清空配置文件

 

 

2、  添加配置信息

! Configuration File for keepalived

 

#全局配置

global_defs {

   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个

     XXX@XXX.com

   }

   notification_email_from XXX@XXX.com  #指定发件人

   #smtp_server XXX.smtp.com                             #指定smtp服务器地址

   #smtp_connect_timeout 30                               #指定smtp连接超时时间

   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识

}

 

vrrp_instance VI_1 {

    state MASTER           #标示状态为MASTER 备份机为BACKUP

    interface eth0         #设置实例绑定的网卡

    virtual_router_id 51   #同一实例下virtual_router_id必须相同

    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99  

    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {       #设置认证

        auth_type PASS     #主从服务器验证方式

        auth_pass 8888

    }

    virtual_ipaddress {    #设置vip

          192.168.200.100       #可以多个虚拟IP,换行即可

    192.168.200.101

    }

}

 

 

    启动、停止服务

1、  启动keepalived

 

 

2、  停止keepalived

 

 

    查看VIP

 

 

     访问

 

 

 

 

     安装keepalived---备机

  安装过程

上传rpm压缩包,解压,安装

  修改keepalived.conf配置文件

 

! Configuration File for keepalived

 

#全局配置

global_defs {

   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个

     XXX@XXX.com

   }

   notification_email_from XXX@XXX.com  #指定发件人

   #smtp_server XXX.smtp.com                             #指定smtp服务器地址

   #smtp_connect_timeout 30                               #指定smtp连接超时时间

   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识

}

 

vrrp_instance VI_1 {

    state BACKUP           #标示状态为MASTER 备份机为BACKUP

    interface eth0         #设置实例绑定的网卡

    virtual_router_id 51   #同一实例下virtual_router_id必须相同

    priority 88           #MASTER权重要高于BACKUP 比如BACKUP为99 

    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {       #设置认证

        auth_type PASS     #主从服务器验证方式

        auth_pass 8888

    }

    virtual_ipaddress {    #设置vip

        192.168.200.100       #可以多个虚拟IP,换行即可

        192.168.200.101

    }

}

 

 

 修改nginx/conf目录下nginx.conf

 

 

 查看VIP

主机的keepalived正常运行时,备机的keepalived不工作,只有主机的keepalived宕机后,备机才接管服务

 

 

    nginx与keepalived不同时存在问题

  场景

当主机、备机的keepalived都正常时,而主机的nginx挂掉,那么此时我们就不能正常访问了。因为这时请求还是经过主机的keepalived,而keepalived不知道主机宕机,所以,此时应该让主机的keepalived挂掉,从而备机接管服务。

  在keepalived目录下创建脚本

在主机上创建:

touch check_nginx.sh

 

 

 编辑脚本

 

#!/bin/bash

# 如果进程中没有nginx则将keepalived进程kill掉

A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A

if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零

       service keepalived stop          ## 则结束 keepalived 进程

fi

 

 

 

 

 

  设置脚本的执行权限

chmod 777 check_nginx.sh

 

 

  编辑keepalived.conf

#全局配置

global_defs {

   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个

     XXX@XXX.com

   }

   notification_email_from miaoruntu@itcast.cn  #指定发件人

   #smtp_server XXX.smtp.com                             #指定smtp服务器地址

   #smtp_connect_timeout 30                               #指定smtp连接超时时间

   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识

}

vrrp_script check_nginx {

    script "/etc/keepalived/check_nginx.sh"         ##监控脚本

    interval 2                                      ##时间间隔,2秒

    weight 2                                        ##权重

}

vrrp_instance VI_1 {

    state MASTER           #标示状态为MASTER 备份机为BACKUP

    interface eth0         #设置实例绑定的网卡

    virtual_router_id 51   #同一实例下virtual_router_id必须相同

    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99

    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {       #设置认证

        auth_type PASS     #主从服务器验证方式

        auth_pass 8888

    }

   track_script {

        check_nginx        #监控脚本

   }

    virtual_ipaddress {    #设置vip

        192.168.101.100       #可以多个虚拟IP,换行即可

    }

 

}

 

 

 

 

  完美解决

在主机的nginx宕机后,主机的keepalived自动结束进程。从而备机接官服务。

 主机nginx宕机

 

 

 

备机

 

 

posted @ 2019-05-05 23:40  King-DA  阅读(597)  评论(0编辑  收藏  举报