Linux服务知识点总结

一.firewalld防火墙

1.firewalld简述

firewalld:防火墙,其实就是一个隔离工具:工作于主机或者网络的边缘。
对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测,
对于能够被规则所匹配的报文做出相应处理的组件(这个组件可以是硬件,也可以是软件):

主机防火墙

网络防火墙

2.具体操作

(1).filter表

限制所有主机(0.0.0.0)拒绝ping本主机                    iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT    
显示所有主机(0.0.0.0)拒绝通过ens33网卡ping本主机       iptables -t filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT

(2).nat表

 #源地址为192.168.250.0网段的ip地址经过防火墙都转换成192.168.31.100这个ip地址(SNAT:源地址转换)
    iptables -t nat -A POSTROUTING -s 192.168.250.0/24 ! -d 192.168.250.0/24 -j SNAT --to-source 192.168.31.100
    
 #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.250.1(DNAT目标地址转换)
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.1:80

 #访问目标地址为192.168.31.200这个机器并且是tcp协议80号端口的都转发给192.168.31.100的9999号端口(DNAT目标端口地址转换)
    iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.31.100:9999

二.LVS

1.lvs介绍

LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。

LVS 由2部分程序组成,包括 ipvs 和 ipvsadm:

(1).ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
(2).ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)

2.lvs/nginx/HAproxy的区别

LVS:
(1).抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
(2).工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
(3).稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
(4).应用范围比较广,可以对所有应用做负载均衡;
(5).不支持正则处理,不能做动静分离。
(6).支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
(7).配置 复杂,对网络依赖比较大,稳定性很高。

Ngnix:

(1).工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
(2).Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;
(3).Nginx安装和配置比较简单,测试起来比较方便;
(4).也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
(5).对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。
(6).Nginx对请求的异步处理可以帮助节点服务器减轻负载;
(7).Nginx仅能支持http、https和Email协议,这样就在适用范围较小。
(8).不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,
(9).支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)
(10).Nginx还能做Web服务器即Cache功能。

HAProxy:

(1).支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
(2).能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
(3).支持url检测后端的服务器出问题的检测会有很好的帮助。
(4).更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
(5).单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
(6).HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
(7)支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
(8).不能做Web服务器即Cache。

3.LVS的三种工作模式

(1).NAT模式(VS-NAT)

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址并发至此RS来处理,RS处理完后把数据交给负载均衡器,

负载均衡器再把数据包原IP地址改为自己的IP,将目的地址改为客户端IP地址。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。

当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

(2).直接路由模式(VS-DR)

原理:负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默.

也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)

并将请求分发给这台RS这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户。

则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端,由于负载均衡器要对二层包头进行改换,所以负载均衡器和RS之间必须在一个广播域。

优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端

与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

缺点:要求负载均衡器的网卡必须与物理网卡在一个物理段上。

(3).IP隧道模式(VS-TUN)

原理:首先要知道,互联网上的大多Internet服务的请求包很短小,而应答包通常很大.那么隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS

RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持

IPTUNNEL协议,所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户

所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量

这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”,(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

三.keepalived

1.keepalived介绍

keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的、功能完善的高可用软件,它提供了HA软件所需的基本功能,比如心跳检测和资源接管,检测集群中的系统服务,在集群节点间转移共享ip地址所有者等,hacmp功能强大,但是部署和使用相对麻烦,同时也是商业化软件,与hacmp相比,keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然他没有hacmp功能强大,但是keepalived部署使用相对简单,所有配置只需要一个配置文件即可完成.

2.工作原理(VRRP协议) 

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组。这个组里面有一个master和多个backup,

master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了。

这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了。

3.体系结构

内核模块:

IPVS:主要用于通过IPVS跟lvs进行整合,是lvs的核心模块,跟lvs一块使用的

NETLINK:主要实现一些网络的功能 

用户模块:(主要用于高可用)

checker:检查服务状态

vrrp stack:用于DS高可用

 4.配置文件

keepalived默认配置文件在/etc/keepalived/keepalived.conf

文件主要分为三类:

(1)全局配置

(2)VRRP配置

(3)LVS配置

四.ansible

原文地址:https://www.cnblogs.com/Super-It/p/11428224.html