lvs+keepalived+nginx(sentos7)

本文介绍如何使用LVS和Keepalived搭建一个简单的负载均衡及高可用集群。包括环境准备、Master节点配置、Slave节点配置以及Web服务器配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#lvs负责负载均衡,将访问按算法分配到后端的应用服务器

#keepalived负责高可用,如果一台挂掉,将VIP换到备用的上边

#nginx做静态web服务器

1.环境准备(使用的是centos7mini安装,没有防火墙,但是要关掉selinux!!!)

master:192.168.126.146(lvs+keepzlived)

slave:192.168.126.147(lvs+keepzlived)

web1:192.168.126.145(nginx1)

web2:192.168.126.148(nginx2)

本地作为客户端访问测试

2.master的配置(部署lvs和keepalived)

2.1》yum下载lvs和keepalived

yum -y install ipvsadm keepalived

#执行ipvsadm和启动keepalived后都会加载ip_vs模块

#查看是否加载了ip_vs模块

lsmod | grep ip_vs

2.2》配置lvs虚拟ip以及后端真实ip

ipvsadm -A -t 192.168.126.100:80 -s rr 

ipvsadm -a -t 192.168.126.100:80 -r 192.168.126.145:80 -g -w 1

ipvsadm -a -t 192.168.126.100:80 -r 192.168.126.148:80 -g -w 1

ipvsadm -ln查看(此处只是查看临时的配置是否生效,最终以keepalived重启后查看的结果为准)

2.3》keepalived的配置文件的修改

#加粗的斜体字都为需要修改的参数

! Configuration File for keepalived

global_defs {
   router_id LVS_01
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.126.100
    }
}

virtual_server 192.168.126.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 1       #默认客户端连接服务器超时时间,不可设置为0。

                                               设置为0后,启动keepalived会报错:Memory allocation problem(内存分配问题)
    protocol TCP

    real_server 192.168.126.145 80 {
        weight 1
    }
    real_server 192.168.126.148 80 {
        weight 1
    }
启动keepalived服务

systemctl start keepalived ##################################AAA文章最后有注解###################

此时再次通过ipvsadm -ln查看,是否显示的为之前设置的虚拟ip和真实ip

并查看/var/log/message日志文件,很重要!!!可以知道keepalived启动过程中是否有错误

3.slave的配置

#按照2.1》2.2》在slave上执行一遍

#将keepalived的配置文件直接复制给slave一份,在此基础上修改部分配置参数

scp /etc/keepalived/keepalived.conf root@192.168.126.147:/etc/keepalived/

state BACKUP
    priority 90

 

4.web端nginx1.2的配置

创建nginx用户并将其添加到组

groupadd nginx

useradd -r -g nginx nginx 

通过官网下载稳定版的tar包

http://nginx.org/en/download.html

 

#通过xshell上传到/usr/local/src下边

#解压到/usr/local下

cd /usr/local

tar -zxvf nginx-1.14.2.tar.gz -C /usr/local

#改名mv nginx-1.14.2/ nginx-1.14/

cd nginx-1.14/

#配置(如果报错,请安装相关需要的软件包)

./configure --prefix=/usr/local/nginx-1.14/

#编译安装

make & make install 

#将nginx服务添加到环境变量中(目的是为了对nginx服务进行操作是更方便,添加后启动时只需输入服务名就可以了)

vi /etc/profile

export NGINX_HOME=/usr/local/nginx-1.14
export PATH=$PATH:$NGINX_HOME/bin:$NGINX_HOME/sbin

#修改nginx的配置文件

user  nginx;
worker_processes  2;      #根据服务器的cpu+核心数设置

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;      #定义日志文件的显示数据和格式

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        charset utf-8;           #支持中文

        access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
 

#输入nginx进行启动(启动时会报错,缺少配置文件中的几个日志文件,按照报错创建即可)

nginx

nginx -s reload   #重新加载nginx的配置文件

nginx -s stop      #停止nginx服务

#####arp抑制的设置############

写一个脚a.sh

#/bin/bash
vip=192.168.126.100
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

chmod +x a.sh

sh a.sh

#通过ip a s查看虚拟ip是否已经配好

5.测试master是否可以调度nginx

#先访问一台nginx(可以通过nginx的index.html文件来区分访问来自不同的服务器)后,关掉这台服务器,再次访问,如果看到的是另一台nginx显示的页面,证明master可以实现调度。nginx也可以正常访问。

#关掉master的keepalived服务,再次访问,如果仍然可以访问到nginx,说明keepalived集群可以实现高可用。

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值