CentOS 7搭建Haproxy+Nginx+Firewalld+DNS负载均衡

一、部署第一台Nginx网站

关于Nginx的原理概述及详细配置请参考博文:Centos 7部署Nginx网站服务

[[email protected] ~]# yum -y install prce-devel zlib-devel <!--安装Nginx依赖-->
[[email protected] ~]# useradd -M -s /sbin/nologin nginx  <!--创建管理Nginx账户-->
[[email protected] ~]# umount /mnt/      <!--切换Linux光盘->
[[email protected] ~]# mount /dev/cdrom /mnt/      <!--挂载光盘-->
mount: /dev/sr0 写保护,将以只读方式挂载
[[email protected] ~]# scp /mnt/nginx-1.6.0.tar.gz [email protected]:/root
          <!--复制Nginx包到第二台Nginx服务器-->
The authenticity of host ‘192.168.100.20 (192.168.100.20)‘ can‘t be established.
ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I.
ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b.
Are you sure you want to continue connecting (yes/no)? yes   <!--输入yes-->
Warning: Permanently added ‘192.168.100.20‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
nginx-1.6.0.tar.gz                                      100%  784KB  68.2MB/s   00:00
[[email protected] ~]# scp /mnt/haproxy-1.4.24.tar.gz [email protected]:/root
           <!--复制haproxy软件包到100.30服务器-->
The authenticity of host ‘192.168.100.30 (192.168.100.30)‘ can‘t be established.
ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I.
ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b.
Are you sure you want to continue connecting (yes/no)? yes   <!--输入yes-->
Warning: Permanently added ‘192.168.100.30‘ (ECDSA) to the list of known hosts.
[email protected]‘s password:
haproxy-1.4.24.tar.gz                                                                               100%  817KB  31.1MB/s   00:00  00:00
[[email protected] ~]# tar zxvf /mnt/nginx-1.6.0.tar.gz -C /usr/src/  <!--解压缩nginx包-->
[[email protected] ~]# cd /usr/src/nginx-1.6.0/    <!--进入nginx目录-->
[[email protected] nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx
        <!--配置nginx-->
[[email protected] nginx-1.6.0]# make && make install  <!--编辑及安装nginx-->
[[email protected] ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/  <!--优化执行命令-->
[[email protected] ~]# echo "192.168.100.10:nginx" > /usr/local/nginx/html/index.html
      <!--创建nginx网站主页,写入测试数据-->
[[email protected] ~]# nginx  <!--启动nginx服务-->
[[email protected] ~]# netstat -anptu | grep nginx <!--监听Nginx服务端口号-->
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3685/ngin: master  

二、部署第二台Nginx网站

[[email protected] ~]# yum -y install pcre-devel zlib-devel  <!--安装依赖软件包-->
[[email protected] ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  nginx-1.6.0.tar.gz
[[email protected] ~]# tar zxvf nginx-1.6.0.tar.gz -C /usr/src/   <!--解压缩nginx软件包-->
[[email protected] ~]# useradd -M -s /sbin/nologin nginx   <!--创建管理nginx账户-->
[[email protected] ~]# cd /usr/src/nginx-1.6.0/
[[email protected] nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx
           <!--配置nginx-->
[[email protected] nginx-1.6.0]# make && make install <!--编译及安装-->
[[email protected] ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ <!--优化执行路径-->
[[email protected] ~]# echo "192.168.100.20:nginx" > /usr/local/nginx/html/index.html
          <!--创建nginx网站主页,写入测试数据-->
[[email protected] ~]# nginx <!--启动nginx服务-->
[[email protected] ~]# netstat -anptu | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6059/ngin: master  

三、部署内网客户端

1、客户端添加VM1网卡,配置和服务器同网段IP地址

2、访问第一台nginx服务器

3、客户端更换IP地址访问第二台nginx服务器

四、部署Haproxy服务器

Haproxy概述及工作原理详细配置参考博文:Haproxy搭建Web群集概述
Centos 7基于Haproxy搭建高可用Web群集

1、安装haproxy

[[email protected] ~]# yum -y install pcre-devel bzip2-devel  <!--安装依赖程序-->
[[email protected] ~]# ls
anaconda-ks.cfg  haproxy-1.4.24.tar.gz  initial-setup-ks.cfg
[[email protected] ~]# tar zxvf haproxy-1.4.24.tar.gz -C /usr/src/  <!--解压缩haproxy压缩包-->
[[email protected] ~]# cd /usr/src/haproxy-1.4.24/
[[email protected] haproxy-1.4.24]# make TARGET=linux26 <!--编译haproxy支持64位系统-->
[[email protected] haproxy-1.4.24]# make install  <!--安装haproxy-->

2、生成haproxy配置文件

[[email protected] ~]# mkdir /etc/haproxy  <!--创建保存haproxy配置文件目录-->
[[email protected] ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.cfg /etc/haproxy/
                <!--生成配置文件-->
[[email protected] ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
         <!--创建haproxy服务控制脚本-->
[[email protected] ~]# chmod +x /etc/init.d/haproxy <!--添加执行权限-->
[[email protected] ~]# chkconfig --add haproxy <!--添加为系统服务-->
 [[email protected] ~]# chkconfig --level 35 haproxy on <!--设置开机自动启动-->
[[email protected] ~]# cp /usr/src/haproxy-1.4.24/haproxy /usr/sbin/ <!--优化程序执行命令-->
[[email protected] ~]# mkdir -p /usr/share/haproxy <!--创建服务运行的临时目录-->

3、配置haproxy群集

[[email protected] ~]# vim /etc/haproxy/haproxy.cfg   <!--修改haproxy主配置文件-->
listen  nginx 192.168.100.30:80   <!--Haproxy服务器IP地址-->
        balance roundrobin
        server  web01 192.168.100.10:80 check inter 2000 fall 3   <!--第一台Nginx的IP-->
        server  web02 192.168.100.20:80 check inter 2000 fall 3  <!--第二台Nginx的IP-->
[[email protected] ~]# /etc/init.d/haproxy start  <!--启动haproxy服务-->
Starting haproxy (via systemctl):                          [  确定  ]

1)客户端访问192.168.100.30

2)客户端更换IP地址重新访问

五、配置Firewalld防火墙(双网卡)

关于Firewalld防火墙的概述及详细配置请参考博文:Centos 7的Firewalld防火墙基础
Centos 7的firewalld防火墙地址伪装和端口转发原理
centos 7之firewalld防火墙配置IP伪装和端口转发案例详解

[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens34   <!--复制ens34网卡配置文件-->
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens34
                 <!--编辑ens34网卡配置文件-->
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.200.254  <!--外网的IP地址-->
NATEMASK=255.255.255.0
DNS1=192.168.200.254   <!--添加DNS-->
[[email protected] ~]# systemctl restart network   <!--重新启动网卡服务-->
[[email protected] ~]# vim /etc/sysctl.conf   <!--开启路由功能-->
net.ipv4.ip_forward = 1
[[email protected] ~]# sysctl -p  <!--刷新配置-->
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
                 <!--编辑ens32网卡配置文件-->
GATEWAY=192.168.100.40
     <!--网站服务器和Haproxy服务器添加网关(内网所有服务器都要添加网关)-->
[[email protected] ~]# systemctl restart network  <!--重新启动网卡服务-->
[[email protected] ~]# systemctl start firewalld.service   <!--启动防火墙-->
[[email protected] ~]# systemctl enable firewalld.service  <!--设置开机自动启动-->
[[email protected] ~]# firewall-cmd --add-interface=ens34 --zone=external
        <!--将ens34接口加入到external区域-->
The interface is under control of NetworkManager, setting zone to ‘external‘.
success
[[email protected] ~]# firewall-cmd --add-interface=ens32 --zone=trusted
            <!--将ens32接口加入到trusted区域-->
The interface is under control of NetworkManager, setting zone to ‘trusted‘.
success
[[email protected] ~]# firewall-cmd --get-active-zones   <!--查看所有激活的区域-->
external
  interfaces: ens34
trusted
  interfaces: ens32
[[email protected] ~]# firewall-cmd --remove-masquerade --zone=external
           <!--关闭默认的IP地址伪装-->
success
[[email protected] ~]# firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=192.168.100.0/24 masquerade‘ <!--external区域配置IP地址伪装-->
success
[[email protected] ~]# firewall-cmd --add-rich-rule=‘rule family=ipv4 destination address=192.168.200.254/32 forward-port port=80 protocol=tcp to-addr=192.168.100.30‘
<!--配置端口映射;将trusted区域的192.168.100.30的80端口映射到external区域的
 192.168.200.254的80端口-->
success
[[email protected] ~]# firewall-cmd --zone=external --add-service=http
            <!--external区域允许http协议-->
success
[[email protected] ~]# firewall-cmd --zone=external --add-service=dns
        <!--external区域允许 dns协议-->
success
[[email protected] ~]# firewall-cmd --zone=external --list-all<!--查看external区域的详细信息-->
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens34
  sources:
  services: ssh http dns
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule family="ipv4" source address="192.168.100.0/24" masquerade
    rule family="ipv4" destination address="192.168.200.254/32" forward-port port="80" protocol="tcp" to-addr="192.168.100.30"

六、部署DNS

关于DNS详细配置及概述请参考博文:CentOS7简单搭建DNS服务

[[email protected] ~]# yum -y install bind bind-chroot bind-utils <!--安装依赖软件-->
[[email protected] ~]# echo "" > /etc/named.conf
[[email protected] ~]# vim /etc/named.conf   <!--编辑DNS主配置文件-->
options {
        listen-on       port    53      { any; };
        directory       "/var/named";
};
zone    benet.com        IN      {
        type    master;
        file    "benet.com.zone";
};

[[email protected] ~]# named-checkconf -z /etc/named.conf
          <!--检查DNS主配置文件是否错误-->
[[email protected] ~]# vim /var/named/benet.com.zone
           <!--编辑benet.com正向解析区域配置文件-->
$TTL    86400
@       SOA     benet.com.       root.benet.com.(
        2020021801
        1H
        15M
        1W
        1D
)
@       NS      centos04.benet.com.
centos04 A      192.168.200.254
www      A      192.168.200.254
[[email protected] ~]# named-checkzone benet.com /var/named/benet.com.zone
         <!--检查正向解析区域配置文件是否错误-->
zone benet.com/IN: loaded serial 2020021801
OK
[[email protected] ~]# chmod +x /var/named/benet.com.zone
        <!--正向解析区域配置文件添加执行权限-->
[[email protected] ~]# chown named:named /var/named/benet.com.zone<!--修改属组属组-->
[[email protected] ~]# systemctl start named  <!--启动服务-->
[[email protected] ~]# systemctl enable named  <!--设置服务开机自动启动-->

七、部署外网客户端

1、客户端配置IP地址、添加DNS地址

2、客户端使用域名访问

3、客户端更换IP地址重新访问

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14156658/2473396

时间: 2024-11-07 09:54:46

CentOS 7搭建Haproxy+Nginx+Firewalld+DNS负载均衡的相关文章

Haproxy+Nginx实现web负载均衡群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx,相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Hapr oxy好.Haproxy的官方网站是http://haproxy.1wt.eu/.本案例介绍使用Haproxy及Nginx搭建一套web群集. 一.案例环境 使用三台服务器模拟搭建一套web群集,具体的拓补图如下: 主机 系统 IP地址 主要软件 Haproxy

CentOS系统下做nginx和tomcat负载均衡

系统总是频繁更新,为了避免更新系统的时候领导看不到东西,打算用ngix做代理,后台部署两个tomcat做负载均衡,避免更新一台就无法使用系统的问题,这两天看了写资料,把几个关键点记录在这里以便备忘. 环境:jdk,1.7,tomcat7,nginx1.5.8; 基于64位的windows配置 第一步:更改tomcat三个端口,保证同一台机器上可以运行两个tomcat,更改的端口包括server port,两个connector port,xml配置参见下面,为了避免文件过大,删除了注释和无关的配

CentOS 6.7配置Nginx 1.8负载均衡

本教程使用Vultr的VPS搭建,准备三台VPS,一主两从 master - 45.32.90.100 slave1 - 45.32.92.47 slave2 - 45.32.89.205 1.编译安装Nginx 1.8 三台全装,并启动Nginx /usr/local/nginx/sbin/nginx 2.修改master配置文件 在http段增加: upstream backend { server 45.32.92.47; server 45.32.89.205; } 在server的lo

基于HAProxy+Keepalived高可用负载均衡web服务的搭建

一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进当前的架构中, 同时可以保护web服务器不被暴露到网络上.2.KeepalivedKeepalived 是一个基于VRRP协议来实现的LVS服务高

如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

《搭建DNS负载均衡服务》RHEL6

搭建DNS负载均衡环境: 1.至少三台的linux虚拟机,一台主的DNS服务器,1台副的(可以N台),1台测试机. 负载均衡有很多种,apache那样的是为了缓解人们访问网站时给服务器造成太大的压力,所以就是你访问网站时,服务器你一下,我一下,他一下,大家轮流着干. 2.DNS负载均衡原理:几台DNS服务器连在一起,就好比上下级的关系,他被干掉了,你顶上,你被干掉了,我顶上..反正总能保证服务不断. 建议:要是你的电脑是4G的内存,虚拟机每台内存都给400M,把图形化界面关了,否则会很卡,关了图

Nginx+Tomcat7+Memcached负载均衡集群+session共享

Nginx+Tomcat7+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5     本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat7+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat7负责实际服务,Memcached负责同步Tomcat7的Session,达到Session共享的目的.1.安装NginxNginx官网:http://nginx.org/下载最新稳定版本.在安装Nginx之前,需要先安装gcc. openssl

Nginx+Tomcat7+Mencached负载均衡集群部署笔记

Nginx+Tomcat+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memcached负责同步Tomcat的Session,达到Session共享的目的. 本文文档下载地址:http://download.csdn.net/detail/zht666/7744157 1.安装Nginx Nginx官网:http

案例一(haproxy+keepalived高可用负载均衡系统)【转】

1.搭建环境描述: 操作系统: [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) 地址规划: 主机名 IP地址 集群角色 虚拟IP haproxy-server 10.0.0.35 主HAProxyServer 10.0.0.40 haproxy-backup 10.0.0.36 备用HAProxyServer webapp1 10.0.0.150 Backend Server 无 webapp2