LVS四层负载均衡规划及部署

前言

LVS 是 Linux Virtual Server的简称,也就是 Linux 虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,因此性能较高。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性,从而以低廉的成本实现最优的服务性能。

一、环境规划

主机功能
192.168.139.151LVS-master + keepalived
192.168.139.152LVS-backup + keepalived
192.168.139.153Nginx代理服务器1
192.168.139.154Nginx代理服务器2
192.168.139.155Tomcat后端应用服务
192.168.139.156PHP后端应用服务

二、环境架构

在这里插入图片描述

三、环境部署

关闭防火墙及selinux。

3.1 部署LVS-keepalived服务

3.1.1 LVS-master端

(1)安装keepalived

yum -y install ipvsadm keepalived

(2)修改keepalived配置文件

[root@lvs-keep-master keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id master
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.139.160/32
    }
}

virtual_server 192.168.139.160 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    net_mask 255.255.255.0
    protocol TCP

    real_server 192.168.139.151 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
		connect_port 80
		connect_timeout 3
	}
}

    real_server 192.168.139.152 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
        }
}
}
3.1.2 LVS-backup端

(1)安装keepalived

yum -y install ipvsadm keepalived

(2)修改keepalived配置文件

[root@lvs-keep-backup keepalived]# vim keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id backup
}

vrrp_instance VI_1 {
    state BACKUP 
    interface ens33
    nopreempt
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.139.160/32
    }
}

virtual_server 192.168.139.160 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    net_mask 255.255.255.0
    protocol TCP

    real_server 192.168.139.151 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
		connect_port 80
		connect_timeout 3
	}
}

    real_server 192.168.139.152 80 {
        weight 1
        inhibit_on_failure
        TCP_CHECK {
                connect_port 80
                connect_timeout 3
        }
}
}
3.1.3 启动keepalived
[root@lvs-keep-master ~]# systemctl start keepalived
[root@lvs-keep-backup ~]# systemctl start keepalived

3.2 部署Nginx服务

3.2.1 两台机器部署nginx服务
[root@nginx-web1 ~]# cd /etc/yum.repos.d/
[root@nginx-web1 yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@nginx-web1 yum.repos.d]# yum install yum-utils -y
[root@nginx-web1 yum.repos.d]# yum install nginx -y
3.2.2 两台机器lo均配置vip
【机器1】
[root@nginx-web1 ~]# ip addr add dev lo 192.168.139.160/32
[root@nginx-web1 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@nginx-web1 ~]# sysctl -p
【机器2】
[root@nginx-web2 ~]# ip addr add dev lo 192.168.139.160/32
[root@nginx-web2 ~]# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
[root@nginx-web2 ~]# sysctl -p
3.2.3 两台机器均配置nginx反向代理
【机器1】
[root@nginx-web1 conf.d]# cp default.conf default.conf.bak
[root@nginx-web1 conf.d]# mv default.conf proxy.conf
[root@nginx-web1 conf.d]# vim proxy.conf
server {
    listen       80;
    server_name  localhost;

    charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://192.168.139.155:8080;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /index.php {
        proxy_pass http://192.168.139.156:80;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}
【机器2】
[root@nginx-web2 conf.d]# cp default.conf default.conf.bak
[root@nginx-web2 conf.d]# mv default.conf proxy.conf
[root@nginx-web2 conf.d]# vim proxy.conf
server {
    listen       80;
    server_name  localhost;

    charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://192.168.139.155:8080;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /index.php {
        proxy_pass http://192.168.139.156:80;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

3.3 部署Tomcat后端应用服务

(1)安装JDK

  • 上传jdk到服务器中,安装jdk。

    [root@tomcat-server ~ ]# mkdir /application
    [root@tomcat-server ~ ]# tar xzf jdk-8u60-linux-x64.tar.gz -C /application/
    [root@tomcat-server ~ ]# mv /application/jdk1.8.0_60 /application/jdk
    
  • 设置环境变量

    [root@tomcat-server ~ ]# vim /etc/profile         
    JAVA_HOME=/usr/local/java
    PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME PATH CLASSPATH
    
  • 使环境变量生效

    [root@tomcat-server ~ ]# source /etc/profile
    
  • 测试jdk是否安装成功

    [root@tomcat-server ~ ]# java -version         
    java version "1.8.0_60"
    Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
    Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
    

(2)安装 Tomcat

  • 将tomcat安装包上传到服务器中

    [root@tomcat-server ~ ]# tar xzf apache-tomcat-8.5.42.tar.gz -C /application/
    [root@tomcat-server ~ ]# mv /application/apache-tomcat-8.5.42 /application/tomcat
    
  • 设置并使环境变量生效

    [root@tomcat-server ~ ]# echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
    [root@tomcat-server ~ ]# source /etc/profile
    
  • 启动tomcat

    [root@tomcat-server ~ ]# /application/tomcat/bin/startup.sh
    

3.4 部署PHP后端应用服务

(1)yum 安装php7.1

[root@php-server ~ ]# rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
[root@php-server ~ ]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@php-server ~ ]# yum install php71w-xsl php71w php71w-ldap php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath php71w-mcrypt -y
[root@php-server ~ ]# yum install -y php71w-fpm

(2)启动php

[root@php-server ~ ]# systemctl start php-fpm
[root@php-server ~ ]# systemctl enable php-fpm

(3)安装Nginx服务

[root@php-server ~ ]# cd /etc/yum.repos.d/
[root@php-server yum.repos.d]# vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@php-server yum.repos.d]# yum install yum-utils -y
[root@php-server yum.repos.d]# yum install nginx -y

(4)配置Nginx连接php

[root@php-server ~ ]# cd /etc/nginx/conf.d/
[root@php-server conf.d]# cp default.conf default.conf.bak
[root@php-server conf.d]# mv default.conf server.conf
[root@php-server conf.d]# vim server.conf
server {
    listen       80;
    server_name  localhost;

    charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

(5)创建index.php文件

[root@php-server conf.d]# cd /usr/share/nginx/html/
[root@php-server html]# vim index.php
<?php
phpinfo();
?>

(6)启动Nginx

[root@php-server conf.d]# systemctl start nginx
[root@php-server conf.d]# systemctl enable nginx

四、环境测试

客户端client通过vip进行访问(在实际生产中该VIP就是我们对外提供访问服务的实际公网IP,做解析之后,客户端就可以通过域名来访问了。这里仅做测试,通过的是IP来访问)。

4.1 访问Tomcat

在这里插入图片描述

4.2 访问PHP

在这里插入图片描述

总结

  • LVS有四种工作模式
    (1)NAT模式;
    (2)直接路由(Direct routing)模式;
    (3)IP隧道(Tunnel)模式;
    (4)FULL-NAT模式。
  • LVS支持10种调度算法
    • 静态算法
      (1)RR:轮叫调度(Round Robin)、轮询;
      (2)WRR:加权轮询(Weight RR);
      (3) DH:目标地址散列调度(Destination Hash );
      (4) SH:源地址 hash(Source Hash)
    • 动态算法
      (5) LC:最少链接(Least Connections);
      (6)WLC:加权最少连接(Weighted Least Connections),为默认采用;
      (7)SED:最短期望延迟调度(Shortest Expected Delay );
      (8)NQ:永不排队/最少队列调度(Never Queue Scheduling NQ);
      (9) LBLC:基于局部性的最少链接(locality-Based Least Connections);
      (10)LBLCR:带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)。
  • LVS可实现四层负载均衡,可做负载均衡集群、结合keepalived实现高可用等。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Virtuoso LVS(物理验证系统)是一种用于验证集成电路版图的工具。它是由美国Cadence公司开发的一款功能强大的布线级验证工具。 Virtuoso LVS在集成电路设计中起着至关重要的作用。通过分析和比较设计原理图和版图之间的连接和连线规则,Virtuoso LVS可以确保电路设计的准确性和正确性。它确保电子器件的版图布局与原理图设计一致,通过验证电路的连通性和连接规则,可以发现并纠正可能存在的错误和问题。 Virtuoso LVS提供了丰富的功能和灵活的选项,以满足不同设计需求。它支持多种版图格式,包括布局图和电路图,可以针对不同层次的设计进行验证。同时,Virtuoso LVS还提供了强大的错误检测和报告功能,可以帮助设计师快速定位和解决问题。 Virtuoso LVS的高性能和准确性是其优势所在。它使用了先进的算法和技术来实现快速和精确的验证,大大提高了设计的效率和质量。通过有效地检测和修复错误,Virtuoso LVS可以减少设计周期和成本,提高产品的可靠性和市场竞争力。 总之,Virtuoso LVS是一款目前广泛应用于集成电路设计的物理验证工具。它通过分析和比较设计原理图和版图之间的连接和连线规则,确保电路设计的准确性和正确性。凭借其高性能和准确性,Virtuoso LVS为设计师提供了一个有效的验证解决方案,提高了设计的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值