澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:负载均衡服务搭建,透西

2019-09-11 作者:服务器运维   |   浏览(50)

虚拟服务器:对外它是单一的入口,对内有很多台计算机为它服务。对使用它的人来说,它是一台机器,有单一的入口点。具体的实现技术包括两种: 应用层的虚拟服务器,网络层的虚拟服务器。
一、应用层的虚拟服务器是利用应用层的转发实现的,相当于一台代理服务器,这正是经常提到的虚拟服务器。
实现方式:利用apache的 ProxyPass 可以实现对虚拟服务器的配置。(httpd.conf中)
如某公司的WWW服务器为 在httpd.conf中作如下设置:
ProxyPass /sales
ProxyPass /rd
ProxyPass /head
如上设置生效了以后,对.
对,
客户不直接同 192.168.0.x交互,所有的请求都通过www.abc.com来转发。
过程如下: client () <--> www.abc.com <--> 192.168.0.1 `

历尽千辛万苦,翻变了所有技术论坛,整整研究了一个多月终于搞定啦!
关于此话题网上很多,但没有一篇是能让你实现目标的,惟有这篇!
本人也是Linux菜鸟,刚开始玩Linux,自学的何其经历艰苦!
今天刊登这份文章,希望给象我一样的新手提供帮助。
更希望高手能够指出不足之处,谢谢。

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。

HTTP服务基础

LVS 负载均衡

二、ip层的虚拟服务器。它是利用ip层的反向masq来实现的。 实现方式:通过对ip包头的目的地址的改写来实现的。linux kernel 2.2.x中带的ip port forward 就是实现的方式。你需要一个管理工具来管理这个方式。此种方式也称为反向NAT。
设置方法:

平台:RedHat8.0 各组件均为Linux 自带,双网卡eth0为出口地址,eth1为连接内网地址,网络连接正常。

本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一

独立Web服务

最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡)。LVS模式工作在网络层,且由内核实现负载转发,效率要比nginx高。

  1. 内核编译中选择 ip_port_forward(??)
  2. 利用ipmasqadm 来设置 ip_port_forward.
    ipmasqadm -A www.abc.com:80 -R 192.168.0.1:80
    具体用法请参考man..这里不对。
    ipmasqadm -A www.abc.com:80 -R 192.168.0.2:80
    3.设置ipchains
    ipchains -A forward -j MASQ -s 192.168.0.0/24
    ipchains -A forward -j MASQ -d 192.168.0.0/24
  3. OK..
    三、测试:
    1 现在你访问
    2 你访问的ip包发到www.abc.com然后目标地址改为192.168.0.x, x为1或2可以由系统的负载平衡算法来选定。
    3 处理完毕,请求包发回www.abc.com,然后在发回给客户。
    这样,机器就可以扩充了.....你的www服务器负载太大,利用以上两种方式均可以实现。你的telnet服务器负载太大,可以用方法2实现。

实现步骤:

可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。

  Web通信基本概念

LVS负载均衡包含三种模式:

...

一。做IP地址翻译,让局域网内机器能够连入互联网。

我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。

基于B/S

1. NAT模式(类似路由器,实现外网内网地址映射,负载均衡服务器修改请求包的源以及目的MAC地址和IP地址,发送给实际服务器;负载均衡服务器,修改响应包的源以及目的MAC地址和IP地址,发送给客户端。请求和响应报文都需要经过负载均衡服务器)

     #加载模块  
     modprobe ip_tables      
     modprobe iptable_nat    
     modprobe iptable_filter    
     modprobe ip_conntrack_ftp  
     modprobe ip_nat_ftp
     #启用IP转发
     echo 1 >; /proc/sys/net/ipv4/ip_forward
     #ip翻译(伪装)
     iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x

在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,

 服务端提供网页

2. TUN模式(IP隧道,负载均衡服务器将外网传来的数据包封装在IP隧道中,传给实际服务器。实际服务器的响应直接发给客户端,而不需要经过负载均衡服务器。)

     注:172.28.0.0/16为内网地址,x.x.x.x为这台机器的外部接口地址。

我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,

 浏览器下载并显示网页

3. DR模式(负载均衡服务器和后端的实际服务器拥有相同的虚拟IP地址,负载均衡服务器收到响应包后,修改目的MAC地址发给实际服务器,实际服务器将响应包直接发给客户端,不需要经过负载均衡服务器)

     客户端只需将自己的网关设置为这些命令就实现了让内网机器上网的目的!如果想用代理服务器提供HTTP的缓存功能接 着做:

我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN(Virtual Server via IP Tunneling),和通过直接路由实现

Hyper Text Markup Language (HTML)超文本标记语言

搭建 LVS DR模式负载均衡服务

二。代理服务器

虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。

Hyper Text Transfer Protocol(http)超文本传输协议 

连接示意图如下:

     #修改配置文件----squid.conf    
     cd /etc/squid
     cp squid.conf.defauld squid.conf    
     #切记!这点重要,因为二者文件有所不同!!!

VS/NATVS/TUNVS/DR技术是LVS集群中实现的三种IP负载均衡技术。

  RHEL7中的Web服务

澳门新萄京官方网站 1

行数           修改
48 http_port 80
405 cache_mem 80 MB   #大小自己改
1466          http_access allow all
1650          httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on    


软件包:httpd

其中,负载均衡服务器的IP地址为 10.10.10.30/24 和 10.10.10.22/32(该IP地址是用户访问的IP地址), Real Server 1的IP地址为10.10.10.31/24, Real Server 2的IP地址为10.10.10.32/24,三者连接在同一个局域网中,且 RS1和 RS2的虚拟IP地址(可以在lo或者lo:0上设置该IP地址,即本地环回,这样该虚拟IP只对该机器本身可见,不会暴露在外部造成IP冲突)都设为负载均衡服务器的IP地址 dev-1. 

    最后一步运行squid:
    cd /etc/init.d
    ./squid start

LBC      负载均衡群集

系统服务:httpd

这样外部访问10.10.10.22时,会访问到负载均衡服务器,而负载均衡服务器选择某个实际服务器,比如RS1,然后将包的目的MAC地址修改为RS1的MAC地址,在将包送到局域网上。此时对于请求数据包来说,目的MAC地址为RS1的MAC地址,因此RS1会收到,RS1发现包的目的MAC为自身,且目的IP地址为10.10.10.22,也是自身的一个IP,于是就认为数据包是发到自己的,就开始进行处理。

#以上是最简单的设置,至于怎么优化squid请参考其他资料。

HA     高可用群集

提供的默认配置

一、安装http服务

这样,客户端实际上是通过代理方式浏览网页(其他服务则不通过代理服务!)。
这样做的最大神奇之处在于:
1.客户断完全感觉不到代理服务器的存在,IE不用做任何设置!
2.你可以随时启动/关闭squid,客户端完全不受影响!(够神奇吧?!)

HPC    高性能运算群集

Listen:监听地址:端口(80)

  1. 在RS1和RS2上分别安装httpd服务
  2. 修改/etc/httpd/conf/httpd.conf 文件,进行相应的配置。
  3. 启动httpd服务,并设置防火墙开放80端口

三.补充
  
     以下两句最好写进 /etc/rc.d/rc.local,因为这两条记录重起机器后就失效了。
     echo 1 >; /proc/sys/net/ipv4/ip_forward
     iptables -t nat -A POSTROUTING -s 172.28.0.0/16 -o eth0 -j SNAT --to x.x.x.x

1、结构

ServerName:本站点注册的DNS名称

二、在负载均衡服务器上安装并配置ipvsadm

负载调度器:分配用户请求,提供服务器池内的主机健康状态检查

DcocumentRoot:网页根目录(/var/www/html)

  1. yum -y install ipvsadm
  2. 设置实际ip和虚拟IP

祝大家愉快! :P

服务器池:真正处理用户请求的多台主机组成的集群。

DirectoryIndex:起始页/首页文件名(index.html)

ifconfig eth0 10.10.10.30/24
ifconfig eth0:0 10.10.10.22 netmask 255.255.255.255 #虚拟IP,暴露给外部

这家伙很懒,写的不够详细,如有不明之处,请跟贴。   

共享存储:通过网络提供数据给服务器池中的节点主机

  一.搭建Web服务器

  1. 设置负载转发

注:   [color=red][size=18]这部分内容目前实现的功能主要就是一个nat的转换的功能,对于squid方便的功能还没有加上来,如果想实现iptables

2、工作模式

1.安装httpd软件

方式一,通过ipvsadm

  • squid的结合的话,必须在规则里加上如下一条:
    iptables -t nat -A PREROUTING -i eth1 -p tcp -s 172.28.0.0/16 --dport 80 -j REDIRECT --to-port 3128

NAT:地址转换

[root@server0 ~]#  yum -y install httpd

systemctl start ipvsadm
ipvsadm -C
ipvsadm --set 30 5 60
#vip on load balancer
ipvsadm -A -t 10.10.10.22:80 -s wrr -p 20 #接受转发协议
ipvsadm -a -t 10.10.10.22:80 -r 10.10.10.31:80 -g -w 1 #增加转发目的地
ipvsadm -a -t 10.10.10.22:80 -r 10.10.10.32:80 -g -w 1 #增加转发目的地
ipvsadm -L -n

TUN:隧道模式

2.启动httpd服务,并设置为开机自启

方式二,通过keepalived

DR:路由模式

[root@server0 ~]# systemctl restart httpd

vim /etc/keepalived/keepalived.conf 修改配置文件如下
global_defs { 
  notification_email { 
        skc361@163.com 
  } 
  notification_email_from sns-lvs@gmail.com 
  smtp_server 192.168.80.1 
  smtp_connection_timeout 30
  router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的

vrrp_instance VI_1 { 
    state MASTER  #指定Keepalived的角色,MASTER为主,BACKUP为备         
    interface eth0  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR   
    advert_int 1  #检查间隔,默认为1s
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        10.10.10.22  #定义虚拟IP(VIP)为10.10.10.22,可多设,每行一个
    } 

# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.10.10.22 80 { 
    delay_loop 6 # 设置健康检查时间,单位是秒                   
    lb_algo wrr # 设置负载调度的算法为wlc                 
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式 
    nat_mask 255.255.255.0               
    persistence_timeout 0         
    protocol TCP                 
    real_server 10.10.10.31 80 {  # 指定real server1的IP地址
        weight 3  # 配置节点权值,数字越大权重越高             
        TCP_CHECK { 
        connect_timeout 10       
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
    } 
    real_server 10.10.10.32 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高 
        TCP_CHECK { 
        connect_timeout 10 
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
    } 
}
 
启动keepalived服务
systemctl start keepalived

3、调度算法:

[root@server0 ~]# systemctl enable httpd.service 

三、设置实际服务器的网卡

轮询

3.书写网页文件

ifconfig lo:0 10.10.10.22 netmask 255.255.255.255 #即设置虚拟IP地址,该IP地址绑定在环回网卡上,不会对外暴露

加权轮询

[root@server0 ~]# echo My First Web > /var/www/html/index.html

四、设置实际服务器的内核参数

最少连接

澳门新萄京官方网站,4.安装elinks软件,并使用elinks浏览Web网站

[root@dev-2 lvs]#vim /etc/sysctl.conf
[root@dev-2 lvs]# sysctl -p
net.ipv4.ip_forward = 1 #打开路由转发
net.ipv4.conf.all.arp_ignore = 1 #只回答目的IP为本网口IP地址的arp包的请求
net.ipv4.conf.all.arp_announce = 2 #对查询目标使用最适当的本机地址
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

加权最少连接

[root@desktop0 ~]# yum -y install elinks.x86_64 

 

加权:分配用户请求之前,检测目标主机的性能是否达到瓶颈。

[root@server0 ~]# elinks -dump 172.25.0.11

上面的 arp_ignore 和 arp_announce 参见 lvs arp设置

*
*

   My First Web

五、使用客户端进行访问
    此时使用客户端访问 请求会被转发到RS1或者RS2上。


二.配置DNS解析

问题排查
    在搭建的时候,可能出现 无法访问,即HTTP请求没有被转发的情况。这种情况可以从以下情况中进行排查:

实验环境:

1.修改主配置文件内容/etc/httpd/conf/httpd.conf 

  1. 负载均衡服务器 防火墙是否关闭,或者是否允许80端口的tcp连接
  2. RS1 和 RS2 的http配置中是否设置 Listen 80(监听本机上的所有地址,如果只监听机器的网卡地址,而虚拟ip包就会被忽略)
  3. 如果在负载均衡服务器上没有设置VIP,只有一个IP地址 10.10.10.22/24,这样也可以配置出来。但是此时,当负载均衡服务器要向 10.10.10.31和10.10.10.32转发时,它需要知道它们的MAC地址,于是会发送ARP请求报文,当RS1或RS2收到ARP,它进行回复的时候发现请求报文的源IP为10.10.10.22 于是直接发到本机了,就不会回复给负载均衡服务器。于是负载均衡服务器就没法动态获知RS1和RS2的MAC地址。
        此时,只能手动在负载均衡服务器上设置arp。 arp -s...
    而且这样做也会导致从负载均衡服务器上不能直接访问RS1/RS2,同样RS1/RS2也不能直接访问负载均衡服务器。所以,还是需要在负载均衡服务器上配置一个eth0和一个虚拟IP eth0:0.

两台Web-Server,一台负载调度器(Director),一台NFS共享服务器(可在web节点实现)

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136644.htm

网络配置:

/ServerName

澳门新萄京官方网站 2

澳门新萄京官方网站:负载均衡服务搭建,透西晋理上网达成方案。VIP(Virtual IP):192.168.66.1/24

...

web-node1:192.168.66.145/24

ServerName server0.example.com:80 #95行

web-node2:192.168.66.146/24

...

NFS-Server:192.168.66.150/24

2.重启服务,并验证

公网IP:172.31.26.16/24

[root@server0 ~]# systemctl restart httpd


[root@desktop0 ~]# elinks -dump server0.example.com:80

搭建VS/NAT步骤:

1、配置内网主机        -- (所有内网机都指向网关)

a、配置共享存储服务器

vim /etc/exports

/share192.168.66.0/24(ro,sync)        --哪个网段ip可以访问该共享(只读,实时同步)

servie rpcbind restart

service  nfs restart

showmount192.168.66.100                -- 查看共享

b、配置服务器池节点主机

cd /var/www/html

mount -t nfs 共享存储IP:共享目录 /var/www/html

service httpd start

第二台手动创建首页文件进行测试

2、配置负载调度器

查询内核是否支持

modprobe ip_vs

cat /proc/net/ip_vs

安装ipvsadm软件

rpm -ivh ipvsadm

查看版本

ipvsadm -v

开启IPv4路由转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

配置防火墙

iptables -t nat -A POSTROUTING -o 外网接口名 -s 内网网段 -j SNAT --to-source 外网IP地址

ipvsadm -A -t 外网IP:80 -s rr                                        --  -A代表添加负载调度器;-s代表使用的算法;rr代表轮询

ipvsadm -a -t 外网IP:80 -r 网站节点1:80 -m                  --  -m代表NAT模式

ipvsadm -a -t 外网IP:80 -r 网站节点2:80 -m

查看所配置的信息

ipvsadm -Ln

保存并设置自启

service ipvsadm save

chkconfig ipvsadm on

3、测试

访问负载调度器的外网卡IP,重复刷新可看到效果。


   My First Web

搭建VS/DR步骤:

三.网页根目录(/var/www/html)

1、负载调度器配置:

service NetworkManager stop

配置虚拟IP:

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-eth0:0

vim ifcfg-eth0:0

DEVICE=eth0:0

IPADDR=虚拟IP

ifup eth0:0

配置内核参数,使其不发广播包,以免造成ip冲突

vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

sysctl -p

modprobe ip_vs

cat /proc/net/ip_vs

安装并配置ipvsadm

rpm -ivh ipvsadm

ipvsadm -v

ipvsadm -A -t 虚拟IP:80 -s rr                             --  -A代表添加负载调度器;-s代表使用的算法;rr代表轮询

ipvsadm -a -t 虚拟IP:80 -r 网站节点1:80 -g       --  -g代表DB模式

ipvsadm -a -t 虚拟IP:80 -r 网站节点2:80 -g

ipvsadm -Ln

service ipvsadm save

chkconfig ipvsadm on

查看主配置文件内容/etc/httpd/conf/httpd.conf 

2、网站服务器1配置:

service NetworkManager stop

拷贝并配置虚拟IP

cd /etc/sysconfig/network-scripts/

cp ifcfg-loifcfg-lo:0

DEVICE=lo:0

IPADDR=虚拟IP

NETMASK=255.255.255.255

修改内核参数,防止ip冲突

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

指一条路由,代表所有要访问该虚拟ip的主机都通过lo:0网卡访问

route add -host 虚拟IP dev lo:0

mount -t nfs 共享存储:共享目录 /var/www/html

service httpd start

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

3、网站节点2配置:

service NetworkManager stop

拷贝并配置虚拟IP

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

DEVICE=lo:0

IPADDR=虚拟IP

NETMASK=255.255.255.255

修改内核参数,防止ip冲突

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

sysctl -p

指一条路由,代表所有要访问该虚拟ip的主机都通过lo:0网卡访问

route add -host 虚拟IP dev lo:0

vim /var/www/html/index.html

"hello world"

service httpd start

/Docu

4、共享存储配置:

共享存储

vim/etc/exports

/share内网网段(ro,sync)

servie rpcbind restart

service  nfs restart

   ...

 DocumentRoot "/var/www/html" #119行

 ...

例如:

客户端访问路径:#elinks -dump server0.example.com/abc

服务端查找路径:/var/www/html/abc/index.html

虚拟Web主机

由同一台服务器提供多个不同的Web站点

区分方式

基于域名的虚拟主机

基于端口的虚拟主机

基于IP地址的虚拟主机(没有人用 )

配置一个虚拟站点

配置文件路径

/etc/httpd/conf/httpd.conf #主配置文件

/etc/httpd/conf.d/*.conf #从配置文件

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf 

...

# Load config files in the "/etc/httpd/conf.d" directory, if any.

IncludeOptional conf.d/*.conf

主配置文件最后调用所有从配置文件

目的:

为了配置方便

为了精简主配额文件

为每个虚拟站点添加配置

<VirtualHost IP地址:端口>

ServerName 此站点的DNS名称

DocumentRoot 此站点的网页根目录

</VirtualHost>

1.在帮助文档中找到虚拟站点配置文件模版

[root@server0 ~]# vi /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 

2.建立配置文件 test01.conf

[root@server0 ~]# vi /etc/httpd/conf.d/test01.conf

 <VirtualHost *:80>

    DocumentRoot /var/www/test

    ServerName www0.example.com

 </VirtualHost>

 <VirtualHost *:80>

    DocumentRoot /var/www/nsd

    ServerName webapp0.example.com

 </VirtualHost>

2.建立目录及相应的网页内容

[root@server0 ~]# mkdir /var/www/test

[root@server0 ~]# mkdir /var/www/nsd

[root@server0 ~]# echo 'wo shi test' > /var/www/test/index.html

[root@server0 ~]# echo 'wo shi nsd' > /var/www/nsd/index.html

3.重启httpd 服务

[root@server0 ~]# systemctl restart httpd.service 

4.用elinks验证

[root@desktop0 ~]# elinks -dump www0.example.com

   wo shi test

[root@desktop0 ~]# elinks -dump webapp0.example.com

   wo shi nsd

启用虚拟Web主机,所有的站点都必须用虚拟Web主机来实现

保证 server0.example.com可以访问

1.修改从配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test01.conf

<VirtualHost   *:80>

   DocumentRoot   /var/www/test

   ServerName   www0.example.com

</VirtualHost>

<VirtualHost   *:80>

   DocumentRoot   /var/www/nsd

   ServerName   webapp0.example.com

</VirtualHost>

<VirtualHost   *:80>

   DocumentRoot   /var/www/abc

   ServerName   server0.example.com

</VirtualHost>

  1. 重起httpd服务

httpd服务访问控制

客户集地址限制

    使用<Directory>配置区段

每个文件夹自动继承其父目录的ACL访问权限

除非针对子目录有明确设置

 <Directory 目录的绝对路径>

..  ..

Require all denied|granted

Require ip IP或网段地址

 </Directory>

例:

Require all denied #禁止任何客户机访问

Require all granted #允许任何客户机访问

Require ip 172.0.0.1 ::1 172.25.0.11 #仅允许部分客户机访问

    实现客户集地址限制

1.创建目录与网页文件

[root@server0 ~]# mkdir /var/www/abc/private

[root@server0 ~]# echo 'xiao ke duo zhao 妈妈'> /var/www/abc/private/index.html

2.建立新的配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test02.conf

 <Directory "/var/www/abc/private">

     Require ip 172.25.0.11 172.0.0.1 #仅允许本机访问

 </Directory>

3.重启httpd服务

[root@server0 ~]# systemctl restart httpd

[root@server0 ~]# elinks -dump server0.example.com/private

   xiao ke duo zhao 妈妈

[root@desktop0 ~]# elinks -dump server0.example.com/private

                            Forbidden

  You don't have permission to access /private on this server.

思路:客户端是否能够访问服务端资源

1.防火墙是否限制

2.服务本身的访问控制

3.SELinux 是否限制

SELinux策略保护

1.安全上下文(标签)

  SELinux 会为文件打上标签

[root@server0 ~]# semanage fcontext -l #查看SELinux给所有文件打的标签

例:

[root@server0 ~]# ls -Zd /var/www/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/

使用自定义Web根目录

题目: 调整Web站点 使用/webroot,作为此站点新的网页目录

1.修改配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test01.conf 

...

<VirtualHost *:80>

   DocumentRoot /webroot

   ServerName server0.example.com

</VirtualHost>

...

2.创建目录与网页文件

[root@server0 ~]# mkdir /webroot

[root@server0 ~]# echo 'wo shi webroot'> /webroot/index.html

3.修改访问控制配置文件

[root@server0 ~]# vim /etc/httpd/conf.d/test02.conf 

...

<Directory "/webroot">

   Require all granted

</Directory>

...

4.修改SELinux标签值

[root@server0 ~]# chcon -R --reference=/var/www /webroot/

#将/var/www 的文件标签 给 /webroot 文件目录

[root@server0 ~]# ls -Zd /webroot/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /webroot/

5.重启httpd服务验证

[root@server0 ~]# systemctl restart httpd.service 

[root@desktop0 ~]# elinks -dump server0.example.com

  wo shi webroot

安全Web服务

https 安全的超文本协议 端口号:443

数字证书基础

   PKI公钥基础设施 Public Key Infrastructure

公钥:主要用来加密数据

私钥:主要用来解密数据(与相应的公钥匹配)

数字证书:证明拥有着的合法性/权威性(单位名称,有效期,公钥,颁发机构及签名)

Certificate Authority (CA)  数字证书授权中心:负责证书的申请/审核/颁发/鉴定/撤销等管理工作

//本文使用的数字证书 ,公钥,私钥 均为网上下载

//如果想要了解如何搭建 CA服务器 可以浏览 

搭建https        

可以访问 

1.安装mod_ssl软件包

[root@server0 ~]# yum -y install mod_ssl.x86_64

2.部署网站的证书

[root@server0 tls]# cd /etc/pki/tls/certs/A

[root@server0 certs]# wget

3.部署网站的根证书

[root@server0 tls]# cd /etc/pki/tls/certs/

[root@server0 certs]# wget

4.部署私钥

[root@server0 certs]# cd /etc/pki/tls/private/

[root@server0 private]# wget

5.修改配置文件

[root@server0 private]# vim /etc/httpd/conf.d/ssl.conf 

...

DocumentRoot "/webroot" #59行

ServerName server0.example.com:443

...

SSLCertificateFile /etc/pki/tls/certs/server0.crt #100行

...

SSLCertificateKeyFile /etc/pki/tls/private/server0.key #107行

...

SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt #122行

...

6.重启服务

[root@server0 private]# systemctl restart httpd.service 

7.验证

[root@desktop0 ~]# firefox

//如果想要了解更多关于 搭建https服务的知识可以浏览 

部署动态网站

部署并测试WSGI站点

题目: 为站点webapp0.example.com配置提供动态Web

 要求:

此虚拟主机监听在端口8909

测试网页为webinfo.wsgi

从浏览器访问 可以接收到动态生成的Web界面

1.安装mod_wsgi软件

[root@server0 /]# yum -y install mod_wsgi.x86_64 

2.切换到相应/var/www/nsd目录下下载动态页面

[root@server0 /]# cd /var/www/nsd/

[root@server0 nsd]# wget

[root@server0 nsd]# cat webinfo.wsgi 

3.在Desktop0上查看,可以看到源代码

[root@desktop0 ~]# firefox webapp0.example.com/webinfo.wsgi

4.server0上修改

[root@server0 nsd]# vim /etc/httpd/conf.d/test01.conf 

 ...

<VirtualHost *:80>

   DocumentRoot /var/www/nsd

   ServerName webapp0.example.com

   wsgiscriptalias / /var/www/nsd/webinfo.wsgi

</VirtualHost>

...

5.重启服务,验证

[root@server0 nsd]# systemctl restart httpd.service 

[root@desktop0 ~]# elinks -dump webapp0.example.com

UNIX EPOCH time is now: 1509700659.44

#UINX 时间戳:自1970-1-1 0:0:0 到达当前所经过的秒数

6.修改webapp0.example.com端口号8909

[root@server0 nsd]# vim /etc/httpd/conf.d/test01.conf 

 Listen 8909

 <VirtualHost *:8909>

    DocumentRoot /var/www/nsd

    ServerName webapp0.example.com

    wsgiscriptalias / /var/www/nsd/webinfo.wsgi

 </VirtualHost>

 

7.重启服务,(发现不能启动)

[root@server0 nsd]# systemctl restart httpd.service 

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

SELinux策略保护

标配Web端口

使用semanage工具可查看

当尝试监听非标配端口时,SELinux会阻止

导致httpd 服务启动失败

查看/var/log/messages文件中会有记录

8.SELinux限制8909端口

[root@server0 nsd]# semanage port -l | grep http #查看http允许的端口

http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010

http_cache_port_t              udp      3130

http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

pegasus_http_port_t            tcp      5988

pegasus_https_port_t           tcp      5989

[root@server0 nsd]# semanage port -a -t http_port_t  -p tcp 8909 #添加8909端口加入http允许端口中 

[root@server0 nsd]# semanage port -l | grep http

http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010

http_cache_port_t              udp      3130

http_port_t                    tcp      8909, 80, 81, 443, 488, 8008, 8009, 8443, 9000

pegasus_http_port_t            tcp      5988

pegasus_https_port_t           tcp      5989

[root@server0 nsd]# systemctl restart httpd.service #重启成功

验证

[root@desktop0 ~]# elinks -dump webapp0.example.com:8909

UNIX EPOCH time is now: 1509767472.39

关于web服务器 在RHCE7的考试中有这么5道题 :

实现一个Web服务器

为 配置 Web 服务器:

从URL地址 下载一个主页文件,并将该文件重命名为 index.html

将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下

不要对文件 index.html 的内容进行任何修改

[root@system1 ~]#yum -y install httpd

[root@system1 ~]#vim /usr/local/share/

[root@system1 ~]#vim /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf #寻找虚拟主机模版

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf

<VirtualHost *:80>

   DocumentRoot /var/www/html

   ServerName server0.example.com

</VirtualHost>

[root@system1 ~]#wget -O /var/www/html/index.html

[root@system1 ~]#systemctl restart httpd

[root@system1 ~]#systemctl enable httpd

[root@system2 ~]# curl  

配置安全Web服务

为站点 配置TLS加密:

一个已签名证书从 获取

此证书的密钥从 获取

此证书的签名授权信息从 获取

[root@system1 ~]# yum -y install mod_ssl.x86_64 

[root@system1 ~]# cd /etc/pki/tls/certs/

[root@system1 ~]# wget

[root@system1 ~]# wget

[root@system1 ~]# cd ../private/

[root@system1 ~]# wget

[root@system1 ~]# vim /etc/httpd/conf.d/ssl.conf 

<VirtualHost _default_:443>

# General setup for the virtual host, inherited from global configuration

DocumentRoot "/var/www/html"

ServerName www.example.com:443

...

SSLCertificateFile /etc/pki/tls/certs/server0.crt

SSLCertificateKeyFile /etc/pki/tls/private/server0.key

SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt

[root@system1 ~]# systemctl restart httpd

[root@system2 ~]# firefox

实现一个Web服务器

为 配置 Web 服务器:

从URL地址 下载一个主页文件,并将该文件重命名为 index.html

将文件 index.html 拷贝到您的 web 服务器的 DocumentRoot 目录下

不要对文件 index.html 的内容进行任何修改

[root@system1 ~]# mkdir /var/www/virtual

[root@system1 ~]# wget -O /var/www/virtual/index.html

[root@system1 ~]# vim /etc/httpd/conf.d/test01.conf 

<VirtualHost *:80>

   DocumentRoot /var/www/virtual

   ServerName www0.example.com

</VirtualHost>

[root@system1 ~]# useradd fleyd

[root@system1 ~]# setfacl -m u:fleyd:rwx /var/www/virtual/

[root@system1 ~]# systemctl restart httpd

[root@system2 ~]# curl www0.example.com

配置Web内容访问

在您的 server0 web服务器的 DocumentRoot 目录下创建一个名为 private 的目录,要求如下:

从 下载一个文件副本到这个目录,并且命名为 index.html

不要对这个文件的内容做任何修改

从 system1 上,任何人都可以浏览 private 的内容,但是从其他系统不能访问这个目录的内容

[root@system1 ~]# wget -O /var/www/html/private/index.html

[root@system1 ~]# vim /etc/httpd/conf/httpd.conf #寻找模版

[root@system1 ~]# vim /etc/httpd/conf.d/test02.conf

<Directory "/var/www/html/private">

   Require ip 127.0.0.1 ::1 172.25.0.11

</Directory>

[root@system1 ~]# systemctl restart httpd.service 

[root@system1 ~]# firefox

[root@system2 ~]# firefox

实现动态Web内容

在system1 上配置提供动态Web内容,要求如下:

动态内容由名为 webapp0.example.com 的虚拟主机提供

虚拟主机侦听在端口 8909

从 下载一个脚本,然后放在适当的位置,无论如何不要修改此文件的内容

客户端访问 可接收到动态生成的 Web 页

此 example.com 域内的所有系统访问

[root@system1 ~]#mkdir /var/www/webapp0

[root@system1 ~]#cd /var/www/webapp0

[root@system1 ~]#wget

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf 

listen 8909

<VirtualHost *:8909>

   DocumentRoot /var/www/webapp0

   wsgiscriptalias / /var/www/webapp0/webinfo.wsgi

   ServerName webapp0.example.com

</VirtualHost>

[root@system1 ~]#yum -y install mod_wsgi              

[root@system1 ~]#semanage port -l | grep http

[root@system1 ~]#semanage port -a -t http_port_t -p tcp 8909

[root@system1 ~]#vim /etc/httpd/conf.d/test01.conf 

[root@system1 ~]#systemctl restart httpd

[root@system2 ~]# firefox

本文由澳门新萄京官方网站发布于服务器运维,转载请注明出处:澳门新萄京官方网站:负载均衡服务搭建,透西

关键词: