LVS-NAT实现Discuz负载均衡

集群:是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。

集群分为:

HA:High Availability 高可用集群

LB:Load Balancing 高可拓展,伸缩集群

HP:High Performance 高性能集群

LVS的类型:nat,dr,tun

nat类型的特性:

1、RS应用使用私有地址;RS的网关必须指向DIP;

2、请求和响应都要经过Director;高负载场景中,Director易成为性能瓶颈;

3、支持端口映射;

4、RS可以使用任意OS;

dr类型的特性:

1、保证前端路由将目标地址为VIP的报文统统发往Directory,而不能是RS;

解决方案:

(1) 静态地址绑定:在前端路由器上操作

问题:未必有路由操作权限

(2) aprtables

(3) 修改RS上内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求;

2、RS可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过RIP对其直接访问;

3、RS跟Directory必须在同一物理网络中;

4、请求报文经由Director,但响应报文必须不能经过Director;

5、不支持端口映射;

6、RS可以是大多数常见的OS;

7、RS的网关绝不允许指向DIP;

tun类型的特性:

1、RIP、VIP、DIP全部是公网地址;

2、RS的网关不会也不可能指向DIP;

3、请求报文经由Director,但响应报文必须不能经过Director;

4、不支持端口映射;

5、RS的OS必须支持隧道功能;

下边我们讲一下Load Balancing的实现。LB实现高拓展集群的方法有软件,硬件两种。由于条件限制而我们只作软件实验

LB实验用到的软件为LVS:Linux Virtual Server虚拟服务器。

lvs分为两部分,ipvsadm和ipvs,ipvs是工作在内核上的。所以我们只需要安装ipvsadm即可。

实验环境准备:

host1:CentOS6.5

网卡两个:eth0 工作在172.16.249.138/16,是VIP是公网IP  ;eth1工作在10.0.0.1/24 是DIP 私网IP

host2:CentOS6.5

单网卡,私网IP:10.0.0.2

ipvsadm版本 :ipvsadm-1.26-2.el6

实验模型:nat类型

实验内容:

对web服务请求做负载均衡,将请求的分发到不同的web服务器上去,降低对单个服务器的压力。

1,配置环境

host1主机配置:

为两块网卡配置IP:

ifconfig eth0 172.16.249.138/16

ifconfig eth1 10.0.0.1/24 up

将eth0设为桥接。eth1设为指定本地网络

yum install ipvsadm        #安装ipvsadm软件

host2主机配置:

ifconfig eth0 10.0.0.2/24

eth0设为本地网络

route add default gw 10.0.0.1

所以host1 的eth1与host2 的eth0 都无法直接访问公网网络。

2,为host2主机提供web服务。

yum install httpd           #安装httpd,有的就无需安装。

配置httpd,创建虚拟主机,模拟两台服务器模式工作。

#DocumentRoot "/var/www/html"                  #注销掉根目录

NameVirtualHost *:80                                   #启用

<VirtualHost 10.0.0.8:80>
ServerAdmin    [email protected]
DocumentRoot    /www/host1/
ServerName    www.aolens.com
ErrorLog    /www/host1_error.log
CustomLog    /www/host1_access.log
</VirtualHost>

<VirtualHost 10.0.0.9:80>
ServerAdmin    [email protected]
DocumentRoot    /www/host2/
ServerName    www.aolens.com
ErrorLog    /www/host2_error.log
CustomLog    /www/host2_access.log
</VirtualHost>

保存

httpd -t          #是否有语法错误。

service httpd reload

mkdir -pv /www/{host1,host2}               #创建文件的目录。为web服务提供两个不同的页面,方便可观察访问的是哪个服务器。

为两台虚拟主机提供访问页面:

vim  /www/host1/index.html

<h1> www.node1.com</h1>

vim  /www/host2/index.html

<h1> www.node2.com</h1>

3,添加一个集群服务

service ipvsadm start                                    #启动ipvsadm服务

ipvsadm -A -t 172.16.249.138:80 -s rr             #添加一个集群 VIP:Port=172.16.249.138:80      调度方式选择rr 轮询,这样便于观察访问

ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.8 -m  #为集群添加RS1

ipvsadm -a -t 172.16.249.138:80 -r 10.0.0.9 -m   #为集群添加RS2

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward             #查看转发功能是否开启,开启为1,关闭是0
0             
                                                                  
[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

ipvsadm的简单用法:

添加一个集群服务: ipvsadm -A|E -t|u|f service-address [-s scheduler]

service-address:

-t|u: VIP:Port

向一个已经存在集群服务添加一个RS: ipvsadm -a|e -t|u|f service-address -r server-address [options]

-r RS-ADDR

-w weight

--gatewaying -g gatewaying (direct routing) (default)

--ipip -i ipip encapsulation (tunneling)

--masquerading -m masquerading (NAT)

查看已经定义的集群服务及RS: ipvsadm -L -n

清空所有的集群服务: ipvsadm -C

删除集群服务: ipvsadm -D -t|u|f service-address

从集群服务中删除RS: ipvsadm -d -t|u|f service-address -r server-address

保存集群服务定义:

ipvsadm -S > /path/to/some_rule_file

ipvsadm-save > /path/to/some_rule_file

让规则文件中的规则生效:

ipvsadm -R < /path/from/some_rule_file

ipvsadm-restore < /path/from/some_rule_file

在物理主机上访问172.16.249.138.

当访问到的数据时www.node2.com是,下个访问数据将会是www.node1.com  ,也可以刷新一个访问会不停变换显示结果,明显,每一次的访问到的服务器端都是不同。当两个服务器数据一样是。这就实现了负载均衡

但是如果同意用户访问同一数据,还不停的做轮询这样不但消耗资源而且缓存机制的作用被大大减小了。那么如何实现让同一用户访问同一数据去往同一服务器呢?实现此方法就要用到Session的持久机制。

Session持久机制:

1、session绑定:始终将来自同一个源IP的请求定向至同一个RS;没有容错能力;有损均衡效果;

2、session复制:在RS之间同步session,每个RS拥有集群中的所有的session;对规模集群不适用;

3、session服务器:利用单独部署的服务器来统一管理集群中的session;

调度算法中的sh算法就可以实现Session绑定。

[[email protected] ~] # ipvsadm -E -t 172.16.249.138:80 -s sh                #修改集群调度算法为sh

在物理主机上访问172.16.249.138.第一次访问到的是什么结果,那么往后一段时间内访问到的数据结果就是相同的。

后边的实现都将172.16.249.138改为192.168.1.128.    ipvsadm的集群定义也一样。

下边我们来为安装Discuz论坛

1,配置nfs服务器,将Discuz放到nfs上。

服务端端配置:

服务器IP:192.168.1.128

在NFS服务器端安装nfs-utils

编辑配置文件:/etc/exports

/nfsserver 10.0.0.0/24(rw,async,no_root_squash)

创建共享目录/nfsserver

mkdir /nfsserver

给共享目录apache用户的rwx权限:

setfacl -m u:apache:rwx /nfsserver

重启服务:service nfs restart

客户端:

创建/web/nfs挂载目录:

showmount -a 172.16.18.5   查看共享的NFS服务。

mount -t nfs 10.0.0.2:/nfsserver /www/host1/upload

mount -t nfs 10.0.0.2:/nfsserver /www/host2/upload

2,提供数据库配置:

安装数据库不会的可以查看:http://aolens.blog.51cto.com/  寻找解答。

host1主机作为MySQL的服务器端。

create database discuz         #创建一个discuz数据库

GRANT ALL ON *.* TO  ‘aolens‘@‘10.%.%.%‘ IDENTIFIED BY ‘aolens‘         创建一个用户给他权限。

3,提供Discuz安装:

在nfs服务器端解压Discuz包。我们这里使用的Discuz版本为:Discuz_7.2_FULL_SC_GBK.zip

cp Discuz_7.2_FULL_SC_GBK.zip /nfsserver

cd /nfsserver

unzip Discuz_7.2_FULL_SC_GBK.zip

mv ./upload/* ./

访问192.168.1.128/upload/index.php   执行Discuz的安装。

解决出现的错误:

chmod 777 ./config.inc.php
chmod 777 ./attachments
chmod 777 ./forumdata
chmod -R 777 ./forumdata/*
chmod 777 ./uc_client/data/cache
yum install php-mysql          
service httpd restart
service mysqld restart

chown -R apache.apache /nfsserver/*

基于Linux做安装Discuz论坛做访问负载均衡,且将数据文件都放在NFS服务器上,实现数据同步实验结束!

------------------------------------------------------END---------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------

时间: 2024-12-27 22:32:55

LVS-NAT实现Discuz负载均衡的相关文章

利用lvs实现discuz负载均衡

一:实验目的 利用LVS实现discuz负载均衡  二:实验拓扑图 WEB服务器与PHP服务器在同一网段内,mysql服务器同时起着LVS负载均担作用. 三:搭建WEB服务器 本次WEB服务器采用编译安装服务,编译过程请参考LAMP平台编译.接下来配置WEB服务器主配置文件.  vim /etc/httpd24/extra/httpd-vhosts.conf  #前面的路径为编译时指定的路径.  ifconfig eth0 192.168.1.16/24 up           #修改主机的I

LVS详解及基于LVS实现web服务器负载均衡

前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 集群基础 集群简介 集群(Cluster)是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用

Heartbeat+LVS+Ldirectord高可用&负载均衡

集群技术主要分为三大类: 高可用性(High Available Cluster),例:Linux-HA 负载均衡(Load balancing Cluster),例:LVS.MOSIX 高性能计算(High Performance Computing),例:Beowulf 我们这里使用 RHEL5.2,LVS,Linux-HA,Ldirectord,构造一个高可用的负载均 衡集群系统.如图: Load Balancer 是整个集群系统的前端,负责把客户请求转发到 Real Server 上.

高可用集群技术之keepalived实现lvs高可用并负载均衡web服务

Keepalived概述: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器. keepalived实现lvs高可用并负载均衡web服务: 准备工作: 2台keepalived节点为: node1.samlee.com

DNS+keepalived+lvs实现高可用负载均衡集群

1.目的: 部署两台lvs调度器并利用keepalived实现主主模型,DNS添加两条A记录指向lvs调度器实现轮询,最终实现高可用负载均衡集群效果 2.拓扑规划: 3.配置实践 (1)同步所有机器时间 在每台机器实行ntp同步: [[email protected] ~]# ntpdate 10.1.0.1 26 Oct 20:10:57 ntpdate[5533]: step time server 10.1.0.1 offset -32408.643564 sec (2)先配置RS,在RS

Keepalived_tengine实现discuz负载均衡和高可用

前言: 上篇博文<keepalived_nginx实现discuz负载均衡和高可用>讲到,由于nginx将health_check功能放入到了商业版本,导致社区版本的nginx进行负载均衡,无法对后端的RS主机进行健康状态检测,所以现在准备使用tengine来取代nginx.我们只需要将前一章节VS主机上的nginx替换为tengine即可. 配置: Host VS1 卸载nginx,安装tengine # yum remove -y nginx # yum groupinstall -y &

LVS+Heartbeat高可用负载均衡

一,环境配置 VIP:192.168.222.222 RIP:192.168.222.134 RIP:192.168.222.135 DR_MASTER:eth0 192.168.222.128 eth1 172.16.0.1 (单网卡也行) DR_SLAVE:eth0 192.168.222.129 eth1 172.16.0.2 (单网卡也行) 二,DR配置 1,安装软件 yum install epel-release -y yum install ipvsadm -y yum insta

通过LVS实现http的负载均衡

通过LVS实现http的负载均衡 1.摘要 本文不考虑双机互备,通过脚本和lvs实现http的负载均衡,实际生产环境使用集群 2.安装 1).软件包准备 ipvsadm-1.26.tar.gz httpd-2.2.23.tar.gz 2).配置Director Server a.检查kernel是否已经支持LVS的ipvs模块 # modprobe -l |grep ipvs kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs

(2)LVS+Keepalived高可用负载均衡架构原理及配置

1.keepalived 介绍2.keepalived 优缺点3.keepalived 应用场景4.keepalived 安装配置5.keepalived+lvs 高可用6.keepalived+nginx 高可用7.keepalived 切换原理8.性能优化9.常见故障 一.keepalived 介绍 1.keepalived 定义keepalived是一个基于VRRP(virtual route redundent protocol)协议来实现的LVS服务高可用方案,可以利用其来避免单点故障

3-4-基于LVS实现4层负载均衡配置和nat模型实战

centos内核支持ipvs,只需在用户空间安装ipvsadm即可,首先应该准备好拓扑环境,了解编写规则的工具用法 yum install -y ipvsadmrpm -ql ipvsadm---可以看到用到了unit file,也就是脚本(开机启动不启动),ipvsadm不是一项服务,规则会保存到内存中不会永久有效,为什么会用到unitfile呢?因为需要在开机时使用restone重新载入规则 注意:对于集群类服务来说,不建议开机自动启动,需要手动开启,防止及其挂了.我们会有高可用集群服务器,