问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nginx lvs haproxy哪个用的多

发布网友 发布时间:2022-04-21 07:47

我来回答

2个回答

懂视网 时间:2022-04-08 02:04

 IP:10.6.0.180

WEB1服务器                      IP:10.6.0.186

WEB2服务器                      IP:10.6.0.187

PHP+NFS服务器               IP:10.6.0.181


首先,安装DNS服务器

yum -y install bind


配置DNS服务器


在 vim /etc/named.conf 中输入以下内容

options {
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    allow-query     { any; };  # 允许任意客户端查询
    recursion yes;
    rrset-order { order random; };   # dns轮询解析
};
logging {
    channel default_debug {
            file "data/named.run";
            severity dynamic;
    };
};
zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";

在 vim /etc/named.rfc1912.zones 中输入以下内容

zone "huxianglin.com" IN {
        type master;
        file "huxianglin.com.zone";   #正向解析配置文件
};
zone "0.6.10.in-addr.arpa" IN {
        type master;
        file "10.6.0.zone";  #反向解析配置文件
};

在 vim /var/named/huxianglin.com.zone 中输入以下内容(正向解析)

$TTL 600
@       IN      SOA     dns.huxianglin.com.   admin.huxianglin.com. (
                        2015060801
                        1H
                        5M
                        3D
                        12H )
        IN      NS      dns
dns     IN      A       10.6.0.180
www     IN      A       10.6.0.186
www     IN      A       10.6.0.187


在 vim /var/named/10.6.0.zone 中输入以下内容(反向解析)

$TTL 600
@       IN      SOA     dns.huxianglin.com.   admin.huxianglin.com. (
                        2015060801
                        1H
                        5M
                        3D
                        12H )
@       IN      NS      dns.huxianglin.com.
1       IN      PTR     dns.huxianglin.com.
2       IN      PTR     www.huxianglin.com.
3       IN      PTR     www.huxianglin.com.

(PS但是我实验反向解析貌似不生效,可能配置有问题)


将根域名服务器写入到named.ca文件中去

dig -t NS . >/var/named/named.ca

                                        



检测配置是否有问题: named-checkconf 

检测正解析: named-checkzone "localhost" /var/named/localhost.zone 

检测反解析: named-checkzone "0.6.10.in-addr.arpa" /var/named/10.6.0.zone   (这一步好像不成功)

rndc-confgen -r /dev/urandom -a  // 这一步是生成 rndc.key, 如果没有这个key namd 是启动不了的。

chown named:named /etc/rndc.key

/etc/init.d/named start

netstat -lnp  |grep named  // 查看一下named进程是否监听了53端口

首先测试正向解析:dig www.huxianglin.com 

接着测试反解析:dig 10.6.0.186     (不成功)


然后,搭建WEB1和WEB2服务器

在服务器上面yum安装nginx服务

yum -y install nginx

启动服务,修改默认页面

echo "10.6.0.186">/usr/share/nginx/html/

service nginx start

然后测试是否能实现通过DNS轮询实现负载均衡


实现负载均衡之后,需要在10.6.0.181上面安装NFS服务和PHP服务。

首先,安装nfs服务使用yum -y install nfs-utils

然后修改配置文件

vim /etc/exports 增加内容如下:

/data/www/ 10.6.0.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)(注意,这个UID和GID都是php-fpm用户的ID)

创建目录并给予权限

mkdir -p /data/www/;chmod 777 /data/www/

启动服务:systemctl start rpcbind;systemctl start nfs

在客户端挂载NFS系统 

客户端同样安装 yum install -y nfs-utils 

查看服务器端都共享了哪些目录 

    showmount -e 10.6.0.181  

在客户端上挂载服务端的nfs 

mount -t nfs  -o nolock,nfsvers=3 10.6.0.181:/home/ /mnt/     //如果不加 -o nolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root

下一步安装php服务,使用源码安装完成之后修改php-fpm的配置如下:

cat /usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = 10.6.0.181:9000
user = php-fpm
group = php-fpm
listen.owner = nobody
listen.group = nobody
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

并启动php-fpm进程。

查看端口是否被侦听:netstat -ant|grep 9000

然后在两台web服务器上面配置nginx的配置文件

vi /etc/nginx/nginx.conf 修改配置如下方这样。

server {
        listen       80 default_server;
        server_name  www.huxianglin.com;
        root         /data/www/discuz;
        include /etc/nginx/default.d/*.conf;
        location / {
        }
location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass 10.6.0.181:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/www/discuz$fastcgi_script_name;
    }

然后在nfs挂载目录下创建一个php探针检测php是否能够正常解析

vi /data/www/discuz/test.php 

<?php echo phpinfo();?>

在浏览器中打开发现能够正常解析PHP。


下一步就需要安装mysql数据库,mysql数据库的安装可以参考下面的链接

http://xianglinhu.blog.51cto.com/5787032/1659415

安装完数据库之后创建一个可以远程访问的账户,这里应为是实验,给予的权限比较大,生产环境中应限定好数据库访问权限。

grant all on *.* to ‘root‘@‘10.6.0.%‘ identified by ‘123456‘;

flush privileges;

然后将discuz的安装包导入到nfs中,通过网页提示进行安装,安装好后可以查询数据库中是否创建了相应的数据库。

至此,该环境搭建完毕,测试DNS轮询的高可用,在两台web服务器中任意停掉一台web服务器的nginx服务,网页仍然能够正常访问。



本文出自 “柠檬” 博客,请务必保留此出处http://xianglinhu.blog.51cto.com/5787032/1660071

使用DNS轮询+NGINX+PHP+NFS+MYSQL实现集群高可用

标签:dns轮询   php   nginx   mysql   nfs   集群   

热心网友 时间:2022-04-07 23:12

一、lvs的优势:

1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和 cpu方面基本无消耗。

2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。

4、无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。

5、基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库、聊天室等等。

另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙。

二、nginx和lvs作对比的结果

1、nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下lvs并不具备这样的功能,所以 nginx单凭这点可利用的场合就远多于lvs了;但nginx有用的这些功能使其可调整度要高于lvs,所以经常要去触碰触碰,由lvs的第2条优点 看,触碰多了,人为出问题的几率也就会大。

2、nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内*,如果是同时拥有内*的 节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另 外注意,lvs需要向托管商至少申请多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个HTTP那么简单了。

3、nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。

4、nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以跑在单机上还是风险较大,单机上的事情全都很难说。

5、nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前lvs中 ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚 好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能 会因此而恼火。

6、nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现很多的窄带链接时apache服务器将会占用大 量内存而不能释放,使用多一个nginx做apache代理的话,这些窄带链接会被nginx挡住,apache上就不会堆积过多的请求,这样就减少了相 当多的内存占用。这点使用squid也有相同的作用,即使squid本身配置为不缓存,对apache还是有很大帮助的。lvs没有这些功能,也就无法能 比较。

7、nginx能支持http和email(email的功能估计比较少人用),lvs所支持的应用在这点上会比nginx更多。

在使用上,一般最前端所采取的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。

重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。

nginx可作为lvs节点机器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。当然这一层面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所逊色于nginx。

nginx也可作为中层代理使用,这一层面nginx基本上无对手,唯一可以撼动nginx的就只有lighttpd了,不过lighttpd目前还没有 能做到nginx完全的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,所以中层代理也拥有一个VIP和lvs是最完美的方案了。

nginx也可作为网页静态服务器,不过超出了本文讨论的范畴,简单提一下。

具体的应用还得具体分析,如果是比较小的网站(日PV<1000万),用nginx就完全可以了,如果机器也不少,可以用DNS轮询,lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。
****************************************************************************************************************
Nginx的优点:
性能好,可以负载超过1万的并发。
功能多,除了负载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配。
社区活跃,第三方补丁和模块很多
支持gzip proxy
缺点:
不支持session保持。
对后端realserver的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过url来检测。
nginx对big request header的支持不是很好,如果client_header_buffer_size设置的比较小,就会返回400bad request页面。
Haproxy的优点:
它的优点正好可以补充nginx的缺点。支持session保持,同时支持通过获取指定的url来检测后端服务器的状态。
支持tcp模式的负载均衡。比如可以给mysql的从服务器集群和邮件服务器做负载均衡。
缺点:
不支持虚拟主机(这个很傻啊)
目前没有nagios和cacti的性能监控模板
LVS的优点:
性能好,接近硬件设备的网络吞吐和连接负载能力。
LVS的DR模式,支持通过广域网进行负载均衡。这个其他任何负载均衡软件目前都不具备。
缺点:
比较重型。另外社区不如nginx活跃。
*************************************************************************************

现在网络中常见的的负载均衡主要分为两种:一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,也有类似于LVS、Nginx、HAproxy的基于Linux的开源的负载均衡策略,
商用负载均衡里面NetScaler从效果上比F5的效率上更高。对于负载均衡器来说,不过商用负载均衡由于可以建立在四~七层协议之上,因此适用 面更广所以有其不可替代性,他的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用。
另一种负载均衡的方式是通过软件:比较常见的有LVS、Nginx、HAproxy等,其中LVS是建立在四层协议上面的,而另外Nginx和HAproxy是建立在七层协议之上的,下面分别介绍关于
LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS的特点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生;
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3、工作稳定,自身有完整的双机热备方案;
4、无流量,保证了均衡器IO的性能不会收到大流量的影响;
5、应用范围比较广,可以对所有应用做负载均衡;
6、LVS需要向IDC多申请一个IP来做Visual IP,因此需要一定的网络知识,所以对操作人的要求比较高。
Nginx的特点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2、Nginx对网络的依赖比较小;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;
7、Nginx能支持http和Email,这样就在适用范围上面小很多;
8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。
HAProxy的特点是:
1、HAProxy是工作在网络7层之上。
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
***********************************************************************************************

现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:
第一阶段:利用Nginx或者HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,需要一定的负载均衡,但是 仍然规模较小没有专业的维护团队来进行维护,也没有需要进行大规模的网站部署。这样利用Nginx或者HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就可以。这时是第一选择
第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能满足,这时使用LVS或者商用F5就是首要选择,Nginx此时就作为LVS或者 F5的节点来使用,具体LVS或者F5的是选择是根据公司规模,人才以及资金能力来选择的,这里也不做详谈,但是一般来说这阶段相关人才跟不上业务的提 升,所以购买商业负载均衡已经成为了必经之路。
第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。
最终形成比较理想的状态为:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 用LVS和LVS+nginx之间的区别! lvs跟nginx实现负载均衡有什么区别 iphonese微信电话问题 求取唯美,文艺范的书名!!!(原创) 文艺女青年的标志是什么? 求助:为寒假生活起个文艺范的标题? 优美文艺语录,以梦为马不负韶华出自哪里? 《文艺风象》《 文艺风赏》 有哪些区别? 向日葵唯美文艺句子 清新小文艺字体有什么? 梦到猫爬到头上什么意思 比较唯美的文章题目有哪些? 文艺唯美作文题目? logo标准设计稿的组成要素 我想要一个时尚,清新唯美,文艺范,阳光,富有意境,独一无二 ,吸引眼球,可爱,带有一些特殊符号,6 梦见猫爬在我背上我一动就用力抓我 比较伤感文艺的小句 连续两天梦到猫,之后猫又爬到窗户边,是什么意思? 404 Not Found 比较文艺的句子(合集60句) linux lvs+nginx整合怎么配置nginx 404 Not Found 为什么负载均衡要 LVS+Nginx 搭配着用 有了LVS,还要apache,nginx有什么用 简述lvs nginx haproxy等集群软件各自的优缺点(对比)? lvs服务器需要安装nginx吗 lvs+keepalived+nginx配置问题 linux群集技术linux群集 lvs+keeplived+nginx+tomca怎么验证测试 如何理解Linux下的负载均衡? 如何用nginx,apache做软负载 404 Not Found 美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问? 梦见梦在河里捉螃蟹还捉到两条鱼 我昨晚梦到去河里面抓鱼 梦见在河里捉鱼,这是什么意思,请各位帮忙解梦。 周公解梦梦到在河里抓了一袋子鱼 梦见自己在河里抓鱼是什么征兆 ps2021怎么卸载 这是这是。