网络服务器搭建

网络服务器搭建

技术支持

本文实现:对外提供web服务,并在如下技术的基础上,避免提高服务的健壮性和高效性。html

基于LVS的负载均衡 //haproxy,naginx可替代mysql

负载均衡技术提高服务的健壮性,保证在高并发状况下服务器仍然能够持久在线提供服务。nginx

基于keepalived的高可用 //pacemaker,corosync,heartbeat可替代web

高可用技术提高服务的持久性,保证主服务器出现问题(down机等状况)下,仍然能够对外提供服务算法

基于nfs的存储共享 //ISCSI,mfs等可替代sql

保证集群提供服务的一致性apache

httpd做为web服务器 //不一样需求,RS不尽相同,如ftp服务,nginx,mysql,tomcat等vim

真正提供web服务的主机后端

网络规划

Client:172.25.254.111浏览器

HA:

​ primer:172.25.254.1 backup:172.25.254.2 VIP:172.25.254.222

LB:

​ RS1:172.25.254.3 RS2:172.25.254.4

NFS:

172.25.254.5 //nfs应该也有高可用备份(实验局限,不作添加)

NFS配置

nfs server 172.25.254.5;本主机配置nfs服务,将/nfsshare共享到网络上,容许的网段上的用户能够经过mount,挂载到本主机的nfs文件系统上,实现文件共享(同步)目的。

  • 下载nfs server

    yum install -y nfs-utils

  • 修改nfs配置文件,共享/nfsshare目录

ehco "/nfsshare 172.25.254.0/24(ro,sync)" > /etc/exports

  • 开启nfs服务

systemctl start nfs

NFS注意事项

 [root@nfs ~]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 948) is running...
nfsd (pid 963 962 961 960 959 958 957 956) is running...
//能够看到nfs服务依赖于rpc协议,即nfs可以使用前提是rpc提早通讯创建通道(初始化)。

rpcbind(老版本称之为portmapper) 端口:111 TCP/UPD

nfsd 端口:2049 TCP/UDP

mountd 端口*** TCP/UDP

HA配置

primer:172.25.254.1

  • 下载安装高可用keepalived包

若是须要最新版本的keepalived则须要自行去官网http://www.keepalived.org/download.html下载安装包,手动编译

yum install keepalived

  • 修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from root@ha2.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER  //标明为master
    interface eth0  //使用eht0网卡
    virtual_router_id 100 //虚拟路由id,主备之间必须一致
    priority 98    //权重,越大越代表资源更倾向
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.254.222  //虚拟ip,即VIP
    }
}

virtual_server 172.25.254.222 80 { //虚拟主机,实现接收响应报文,并转发给真实主机
    delay_loop 6
    lb_algo wrr  //lvs算法选择,lvs提供十种调度算法,此处使用加权轮询
    lb_kind DR  //lvs模型选择,DR模式;lvs提供四种模型
    nat_mask 255.255.255.0
#    persistence_timeout 50  //持久链接,此处屏蔽
    protocol TCP   //使用TCP协议

    real_server 172.25.254.3 80 {  //真实主机 IP port
        weight 3  //权重为3
        TCP_CHECK {  //基于tcp检测,健康信息
            connect_timeout 3 
            nb_get_retry 3
            delay_before_retry 3
                }
        }
    real_server 172.25.254.4 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
                }
        }
    }

standby:172.25.254.3

配置和primer配置基本一致,再keepalived的配置文件中,稍有不一样:


state BACKUP //标识为备用
priority 98  //此处权重应该比primer小,即资源黏性更倾向于primer

ipvsadm工具

ipvsadm只是ipvs的管理工具,真正的lvs实现是在内核上的ipvs模块。

DR模式介绍

每个RS都有RIP 和 VIP(VIP都同样),为了避免让VIP冲突,RS的VIP被隐藏,不作任何通讯,只是用来响应客户端请求时,用做>源地值使用


    Director经过修改MAC将数据报文发送给RS,RS上有VIP,就能够接收报文
    只须要作一次地址转换,且是请求报文,工做压力小不少,最多支持后端百余台RS

1,各节点必须跟Director在同一个物理网络地址中,由于是根据MAC地址传发报文的2,RIP地址,能够不用是私有IP,实现便捷管理(ssh远程链接)3,Director仅负责处理请求报文,响应报文由RS发给客户端4,集群节点必定不能使用Direcotr看成默认网关5,Director不支持端口于映射,由于是RS直接响应的6,大多数操做系统均可用在RS上,RS要求必须能够隐藏VIP7,Director能够处理更多的RS

  • 下载ipvsadm工具

yum install -y ipvsadm

ipvsadm要添加cluster yum源

vim /ect/yum.repos.d/rhel-source.repo


[fsx]
name=redhat-fsx
baseurl=http://172.25.254.111/fsx6.5 //yum源各有不一样,自行配置本身的yum源
gpgcheck=0
enabled=1

[cluster]
name=redhat-cluster
baseurl=http://172.25.254.111/fsx6.5/LoadBalancer //添加机群yum源
gpgcheck=0
enabled=1
  • 开启服务

/etc/init.d/ipvsadm start //启动服务

/etc/init.d/ipvsadm start //启动服务

chkconfig keepalived on //开机自启keepalived

chkconfig ipvsadm on //开机自启ipvsadm

RS配置

服务资源配置

RS为客户端提供httpd服务,实现负载均衡后端RS集群

RS1:172.25.254.3 RS2:172.25.254.4 配置流程以下:

  • 安装httpd服务,RS1,RS2同时配置

yum install -y httpd

  • 挂载共享目录,到httpd的发布目录,RS1,RS2同时配置

mount -t nfs 172.25.254.5:/nfsshare /var/wwww/html

  • 编辑测试页,RS1配置便可

echo "server.test.com" > /var/www/html/index.html

  • 开启服务

/etc/init.d/httpd start

chkconfig httpd on

查看httpd服务:


[root@lb1 conf]# netstat -antple |grep httpd
tcp        0      0 :::80                       :::*                        LISTEN      0          9210       1124/httpd  
//httpd server监听80端口

隐藏VIP配置

由于lvs服务选取DR模型,lvs和RS之间依靠ARP协议,使用物理地址通讯,响应报文由RS直接发送给Clients,因此RS须要添加VIP,又由于RS和LVS服务在同一网段,为了不VIP冲突,须要隐藏RS上的VIP(即RS上的VIP仅仅作为响应服务时的源IP使用)。具体方法以下:

添加RS:VIP

ifconfig lo:0 172.25.254.222/32 broadcast 172.25.254.222 up//vip对外不可见,netmask为24,且网关不可指向Director(lvs服务器)

route add -host 172.25.254.222 dev lo:0//添加路由选项,由lo别名执行转发

添加隐藏规则

cd /proc/sys/net/ipv4/conf

echo 1 > all/arp_ignore

echo 1 > eth0/arp_ignore

echo 2 > all/arp_announce

echo 2 > eth0/arp_announce

注意:

  • arp_announce:定义将本身地址向外通告时的通告级别


    0:将本地任何接口上的任何IP进行通告
    1:尽量避免通告非最佳IP
    2:仅使用最佳本地IP进行通告
  • arp_ignore:定义接收到ARP请求时的响应级别


    0:只要本地配置有响应地址,不管在哪一个接口上,就都响应
    1:仅仅响应请求的IP的网卡结构的地址

解决DR模型下,RS和Director的IP冲突办法:

1,vip:MAC(dvip)2,arptables //一个管理工具3,kernel parameter

//此处用的是第三种方法

测试

Client:172.25.254.111

浏览器访问:

[]: http://172.25.254.222/index.html

获得返回数据:

server.test.com

压力测试


ab -n 10000 -c 100 http://172.25.254.222/index.html

执行结果:

This is ApacheBench, Version 2.3 <>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.25.254.222 (be patient)Completed 1000 requestsCompleted 2000 requestsCompleted 3000 requestsCompleted 4000 requestsCompleted 5000 requestsCompleted 6000 requestsCompleted 7000 requestsCompleted 8000 requestsCompleted 9000 requestsCompleted 10000 requestsFinished 10000 requests

Server Software: Apache/2.2.15Server Hostname: 172.25.254.222Server Port: 80

Document Path: /index.htmlDocument Length: 27 bytes

Concurrency Level: 100Time taken for tests: 6.404 secondsComplete requests: 10000Failed requests: 0Write errors: 0Total transferred: 2950000 bytesHTML transferred: 270000 bytesRequests per second: 1561.56 [#/sec] (mean)Time per request: 64.038 [ms] (mean)Time per request: 0.640 [ms] (mean, across all concurrent requests)Transfer rate: 449.86 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 5 60.9 1 1009Processing: 1 58 37.2 72 299Waiting: 0 57 36.6 71 299Total: 1 63 71.9 74 1099

Percentage of the requests served within a certain time (ms) 50% 74 66% 82 75% 85 80% 87 90% 93 95% 98 98% 115 99% 155 100% 1099 (longest request)

再服务器端执行ipvsadm进行监控:

[root@ha1 ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 172.25.254.222:80 wrr -> 172.25.254.3:80 Route 3 2 7507 -> 172.25.254.4:80 Route 1 0 2502

[root@ha1 ~]# ipvsadm -L --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:PortTCP 172.25.254.222:http 20072 100427 0 7242973 0 -> 172.25.254.3:http 15054 75337 0 5433057 0 -> 172.25.254.4:http 5018 25090 0 1809916 0

真实数据共享

将须要共享的数据,使用软连接(或者直接挪动)指向172.25.254.5的/nfsshare,便可实现网络上的数据服务

注意:要让服务上线,须要考虑整个服务的开启顺序,避免服务断点