Consul+Nginx+Upsync+Linux+Keepalived+Lvs的动态负载均衡

注:

Nginx版本必须大于等于1.9,linux我使用的是7.0版本,记得关闭防火墙

开始正文:

这里只提一下两个比较会出错的配置,consul,upsync,PCRE库,SSL库,ZLIB库的配置网上很多不一一详解(我是在/usr/local中配置的)

Nginx的配置:

cd /usr/local/

wget http://nginx.org/download/nginx-1.9.10.tar.gz

tar -zxvf nginx-1.9.10.tar.gz

groupadd nginx

useradd -g nginx -s /sbin/nologin nginx

mkdir -p /var/tmp/nginx/client/

mkdir -p /usr/local/nginx

cd nginx-1.9.10

./configure   --prefix=/usr/local/nginx   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --with-http_realip_module   --http-client-body-temp-path=/var/tmp/nginx/client/   --http-proxy-temp-path=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre --add-module=../nginx-upsync-module-master

此时如果报错SSL modules require the OpenSSL library

解决办法

yum -y install openssl openssl-devel,然后重新执行以上代码

Keepalived的配置:

1.下载keepalived

wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz

2.解压安装:

tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/

3.下载插件openssl

yum install -y openssl openssl-devel(需要安装一个软件包)

4.开始编译keepalived

cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived

5. make && make install

执行./configure --prefix=/usr/local/keepalived时报错:configure: error: Popt libraries is required

出现此错误的原因:

未安装popt的开发包

解决方法:

yum install popt-devel

安装好popt的开发包。重新执行以上步骤即可。

keepalived安装成Linux系统服务:

将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:

首先创建文件夹,将keepalived配置文件进行复制:

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

然后复制keepalived脚本文件:

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

安装到这一步可能会报错文件已经存在,所以执行下面代码:

cd /usr/sbin/

rm -f keepalived

cp /usr/local/keepalived/sbin/keepalived  /usr/sbin/

可以设置开机启动:chkconfig keepalived on,最后再创建一个存放备份的文件夹,mkdir /usr/local/nginx/conf/servers/,到此安装完毕。

Nginx.config配置文件:

截取关键两部分:

upstream test {
        #这个不用管,固定的
        server 127.0.0.1:11111;
        #连接ConculServer,动态获取upstream配置负载均衡信息
       
upsync 192.168.44.128:8500/v1/kv/upstreams/test upsync_timeout=6m
upsync_interval=500ms upsync_type=consul strong_dependency=off;
        #动态获取ConculServer相关负载均衡信息持久化到硬盘
        upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;
    }
    server {
        listen 80;
        server_name  localhost;
        location = / {
        proxy_pass http://test;      
        index index.html index.htm;
        proxy_connect_timeout 1;
        proxy_send_timeout 1;
        proxy_read_timeout 1;
        }
    }

Keepalived.config配置文件:

! Configuration File for keepalived

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" #运行脚本
    interval 2 #检测时间间隔
    weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,AA_1 为虚拟路由的标示符,自己定义名称
vrrp_instance AA_1 {
    ###MASTER 主的意思  BACKUP 从
    state MASTER #来决定主从
    interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    virtual_router_id 111 # 虚拟路由的 ID 号, 有主备连个nginx时,两个节点设置必须一样(自己定义的)
    mcast_src_ip 192.168.44.128 #填写虚拟机ip
    priority 100 # 节点优先级,主要比从节点优先级高
    nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    
    track_script {
        chk_nginx #执行 Nginx 监控的服务
    }
    ### 虚拟IP地址配置规范 前三个一致,最后一个不一样
    virtual_ipaddress {
        192.168.44.110 # 虚拟ip
    }
}

配置完毕后在虚拟机中查看ip地址,有如下两个说明配置成功

最后部署脚本:

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

授权脚本:

chmod 777 nginx_check.sh

配置完毕,开始测试

启动keepalived:service keepalived start

启动consul(local目录下启动):./consul agent -dev -ui -node=consul-dev -client=(虚拟机ip地址)

ConculWeb的ip地址(要和虚拟机的ip地址相同):http://192.168.44.128:8500

Postman中的URL(必须用put,Postman的使用不写了,发送下面链接便可以在consulweb中的key/value中查看到):

我开了两个tomcat,一个端口号为8081,另一个为8082

http://192.168.44.128:8500/v1/kv/upstreams/test/......:8081

http://192.168.44.128:8500/v1/kv/upstreams/test/......:8082

安装好keepalived后我只要启动Lvs的vip虚拟的ip地址便可以启动nginx

注:URL中的“test”是和配置文件中的一致的,192.168.44.128是我的虚拟机的ip地址,打码的是我的ip地址,但后面必须跟两个tomcat的端口号。

至此,结束。有错地方希望各位指正。

原文地址:https://www.cnblogs.com/lzh110/p/9452463.html

时间: 2024-11-08 13:55:50

Consul+Nginx+Upsync+Linux+Keepalived+Lvs的动态负载均衡的相关文章

keepalived+lvs 实现tcp负载均衡

因为测试机其有限,而且也只是为了看看lvs负载均衡tcp端口能否正确获取到客户端的真实IP,之前用过nginx,haproxy,对非http协议的获取客户端真实IP都毫无办法.安装过程就不叙述. keepalived+lvs server 192.168.53.10 DR server 192.168.53.10 real server 192.168.53.12 keepalived server :执行以下操作 [ [email protected] ]cat keepalived.conf

mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案    4 3.1.环境    4 3.2.架构图    5 3.3.设计原理    6 4.相关软件安装    6 4.配置mysql的主从    7 5.通过lvs+keepalived实现负载与热备,并实现读写分离    8 1.前言 最近研究了下高可用的东西,这里总结一下mysql主从复制读

Keepalived+lvs+httpd之负载均衡

最近在研究 负载均衡.目前研究的是keepalived+lvs模式 1.软件介绍 keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障.keepalived主要用作realserver的健康检查以及负载均衡主机和backup主机之间的故障漂移. 单点故障:在公司整个业务流程中,某一点出现故障就会导致整个系统架构不可用,单点故障常发生在数据库.核心业务系统等.对此我们的解决办法是对核心业务系统进行高可用负载均衡. LVS:Linux    Virtual 

Keepalived + LVS 高可用负载均衡集群部署

Keepalived(高可用) 通过在两台主.备调度器上实现Keepalived高可用解决调度器单点失败问题 主.备调度器上配置LVS,正常情况下主调度器工作 主调度器异常时,Keepalived启用备用调度器,保证了调度器的高可用 调度器保证了后台服务的高可用 Keepalived机制把同一个IP一直分配给同一个Web服务器 IP地址分配: Web1:        192.168.10.20      ifcfg-lo:0   192.168.10.50 Web2:        192.1

Consul+upsync+Nginx实现动态负载均衡 摘自https://blog.csdn.net/qq_29247945/article/details/80787014

传统感念:每次修改完nginx配置文件,要重启nginx 动态感念:每次修改完nginx配置信息,不需要重启,nginx实时读取配置信息. Nginx: 反向代理和负载均衡 Consul:是用go编写(谷歌),实现对动态负载均衡注册与发现功能 SpringCloud支持  Zookeeper.Eureka.Consul服务注册与发现. 服务注册:服务实现者可以通过HTTP API或DNS方式,将服务注册到Consul. 服务发现:服务消费者可以通过HTTP API或DNS方式,从Consul获取

nginx+keepalived的高可用负载均衡集群构建

实验架构图: 实验环境 Nginx和Keepalived原理介绍 参考博客:http://467754239.blog.51cto.com/4878013/1541421 1.nginx Nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发, 从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(wor

Nginx、LVS及HAProxy负载均衡软件的优缺点详解

提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护.缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用:另外一种就是类似于Nginx/LVS

Nginx+keepalived双机热备+负载均衡 ???待续

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由

Nginx、LVS、HAProxy负载均衡软件的优缺点

PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的:大型网站或重要的服务,且服务器比较多时,可以考虑用LVS. 一种是通过硬件来进行进行,常见的硬件有比较昂