Cluster原理
集群的总类:
1.负载均衡集群(LB:Load Banlancing):实现将一个访问量或者任务量特别大的应用,给他
平均分配到不同的服务器上面,以提供高容量、大并发。
2.高可用集群(HA:High Avalibility):将多台计算机组合起来,避免一个服务因某台机器
出现故障,而导致服务中断的,在于保障服务的可持续性。
3.高性能集群(HP:High Performance)又叫科学运算集群:解决复杂的计算,组合起来的集群,一般要很大量
的计算机组成。suse用的比较多
集群分别代表的软件
LB:负载均衡集群(LB:Load Banlancing)
lvs(Linux Virtual Serverlinux虚拟服务器):提供更高的吞吐率、提供冗余、更灵活的实用性
lvs:ipvsadm(工作在用户空间)/(ipvs工作在内核空间)和iptables/netfilter类似
lvs的四个ip地址
1)Virtual IP address(VIP):面向用户提供服务的地址
2)Real IP address(RIP):real server的ip地址
3)Director’s IP address(DIP):director与real server连接的ip地址,DIP是配置在director上面
4)Client computer’s IP address(CIP): 客户端地址
拓扑图: (ip4)web server1
[LVS] /
user(ip1)—-(ip2)director(ip3)
\
(ip5)web server2
ip1表示CIP,ip2表示VIP,ip3表示DIP,ip4和ip5表示RIP
lvs的三个种类(或者三个模型)
1)NAT:Network address translation网络地址转换(LVS-NAT)—>目标地址转换
如何实现:
CIP–>VIP DIP–>RIP
Client————->Director————->Cluster node(server)
<————- <————-
CIP<–VIP DIP<–VIP
NAT模型一般承受5-6台server node
拓扑图:
(ip4)web server1
[LVS] /
user(ip1)—-(ip2)director(ip3)
\
(ip5)web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(CIP)D(RIP)]—–>web
涉及到目标地址转换(DNAT)
回复的过程:web—–>director[S(RIP)D(CIP)]—–>user[S(VIP)D(CIP)]
涉及到源地址转换(SNAT)
web server 的网关是指向director的DIP。
NAT模型的要求:集群节点必须在同一个网段当中,即DIP与RIP在同一个网段;RIP通常使用私有IP
地址,仅用于和DIP地址进行通信;director将处理在客户端与server之间的所有通信;server
必须把DIP设置为默认的网关;director可以实现端口映射,即VIP的端口和RIP的端口可以不一
样;server可以使用任意的操作系统;director所能支持的server的数量不多;
2)Direct routing:直接路由(LVS-DR)使用最多的模型,用于生产环境中
DR模式可以承受上百台server
拓扑图:
web server1
(RIP)—–> 虚拟一个VIP
/
user(CIP)——router——–switch—-(VIP/DIP)director
\
(RIP)—-> 虚拟一个VIP
web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(CIP)D(VIP)]—–>web
回复的过程web——->user[S(VIP)D(CIP)]
DR模型中web server和director都有两个IP,server是RIP和VIP,每个server的VIP都一样,但是RIP
不一样。
DR模型的要求:server必须和director在同一个物理网络上;RIP可以使用公网地址,使用公网地址的好处
如果director出现故障,可以用dns的A记录来指向server的RIP;director仅处理发来的请求,响应的请求
将不在通过director;通常server的网关一定不能指向director;director不能做端口映射,server可以
使用任意的操作系统;director能支持大量的server;
3)IP tunneling:IP隧道(LVS-TUN)
拓扑图:
(RIP)web server1
/
user(CIP)——router——–network cloud—-(VIP/DIP)director
\
(RIP)web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(DIP)D(RIP)]—–>web
把源[S(CIP)D(VIP)]进行了封装成DIP
回复的过程:web[S(VIP)D(CIP)]—–>user
把从director接受到的包解分装,发现源是director的VIP,目的是
user的CIP
TUN模型的要求:server和director在不同的网络上;RIP必须是公网IP地址;director只
需要处理传来的请求,同时响应的数据包一定不能经过director;director不能做端口映射;
只有支持IP隧道的操作系统才能是server
director的调度server的方法:
1)静态调度方法:fixed Scheduling Methods指director在选举server的时候不会考虑这个server当前
的连接的活动状态。
代表算法
RR(Round-robin)轮叫算法
WRR(Weighted round-robin)加权轮叫算法—>适合server的硬件不同和性能不同
DH(Destination hashing)目标地址哈希算法—->将同一个ip地址的请求发给同一个server,应 用的server为sqiud server 缓存服务器
SH(Source hashing)源地址哈希算法—->适合公司很多员工,然后自己上网的外接口有两个
2)动态调度方法:dynamic scheduling methods指director每选举server的时候会判断这个server当前连接
状态是不是很多,如果很多则排除在外,然后选择那些连接状态比较少的,如果连接状态都一样多,那就选择排在最上面的。
TCP连接 活动状态的标识是established并且有数据传输,非活动状态的标识是非established状态的连接,连接还没有断开,但是已经不在传输数据了。还有一种就是根本没有连接
代表算法
LC(Least-connection)最少连接数—->每当一个新的请求连接进来,director会查看每个 server上当前处于活动状态的个数和处于非活动状态的个数,计算方法 overhaed(当前的负载个数)=10(处于活动状态的个数)*256+10000(非活 动状态),首先那个server的overhead个数少就选那个server,如果 server的overhead相同,那就选择排列在server列表的最上方的一个server。
WLC(Weight Least-connection)是最优算法,也是默认的算法,计算方法overhead/weight(权重)
SED(Shortst Expected Delay)最少期望延迟—->是WLC的改进算法,在算overhaed值的时候不考 虑非活动状态的值,计算方法overhaed=(n+1)*256/weight,n表示 活动的个数,weight表示权重。
NQ(Never Queue)从不排队—->对SED的算法的改进,先不管overhaed是多少,只要有server的连 接状态为0,则会给你一个连接个数。
LBLC(Locality-Based Least-Connection)基于本地的最少连接,是DH算法的动态调度。
LBLCR(Locality-Based Least-Connection with Replication Scheduing)带复制的基于本地的最 少连接,时候director后面接cache服务器的,在接后面的server
LVS的实验:NAT模式
拓扑图:
(ip4)web server1
[LVS] / \
user(ip1)—-(ip2)director(ip3) ====nfs(来共享文件)
\ /
(ip5)web server2
ip地址规划
保证web server的数据一致—->1.rsync实现文件级别的同步,效率不高
2.drbd基于主机的磁盘镜像,高可用集群中用到
3.share storage共享存储 a.DAS直接附加存储 b.NAS(nfs、 samba)文件服务 c.SAN存储区域网络,本身具有冗余
1.看内核是否支持ipvs
grep -i ‘ip_vs’ /boot/config-2.6.32-71.el6.i686
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
CONFIG_IP_VS_FTP=m
2.拓扑规划ip
Client:
ip1(CIP)=192.168.1.1
Director:
ip2(VIP)=192.168.1.10 gw=192.168.1.1
ip3(DIP)=192.168.14.50
Web server1:
ip4(RIP)=192.168.14.51 gw=192.168.14.50
Web Server2:
ip5(RIP)=192.168.14.52 gw=192.168.14.50
3.Diretor的配置:
ifconfig eth0 192.168.1.10/24
ifconfig eth1 192.168.14.50
route add default gw 192.168.1.1
iptables -F
a)yum -y install ipvsadm
b)man ipvsadm
ipvsadm -D -t|u|f service-address 删除集群服务
ipvsadm -C 清空集群服务的
ipvsadm -R
ipvsadm -S [-n] 显示统计数据的
ipvsadm -d -t|u|f service-address -r server-address 从集群服务里面删除real server的
ipvsadm -L|l [options] 显示状态表或者查看
ipvsadm -Z [-t|u|f service-address] 清空计数器的
ipvsadm –set tcp tcpfin udp 设置超时时间
ipvsadm –start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm –stop-daemon state
ipvsadm -h 帮助
1.定义一个集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-O] [-M netmask] 定义集群服务
解释:-A|E -A表示add,E表示修改
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark
service-address服务地址即director (VIP)
-s指明调度方法(默认是WLC)
eg:ipvsadm -A -t 192.168.1.112:80 -s rr
2.向此集群服务器添加RealServer
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower] 向集群服务添加real server的
解释:-a|e -A表示add,E表示修改
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark
service-address服务地址 director
-r 指明real server的地址 server-address
[-g|i|m] g表示直接路由模型 i隧道模型 m表示nat模型 默认是-g DR模型
-w 表示权重 可以省略,省略表示1,选择这个之前你的算法可以支持权重
-x 连接的个数的上限
-y 连接的个数的下限
eg:ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.51 -m -w 1
ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.52 -m -w 2
c)设置转发
sysctl -w net.ipv4.ip_forward=1
or
sed -i ‘/net.ipv4.ip_forward/s/0/1/’ /etc/sysctl.conf
sysctl -p
4.Web Server1的配置:
ifconfig eth0 192.168.14.51/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i ‘$a ServerName 192.168.14.51:80′ /etc/httpd/conf/httpd.conf
c)echo “this is web1 server” >> /var/www/html/index.html
d)service httpd restart
5.Web Server 的配置
ifconfig eth0 192.168.14.52/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i ‘$a ServerName 192.168.14.52:80′ /etc/httpd/conf/httpd.conf
c)echo “this is web2 server” >> /var/www/html/index.html
d)service httpd restart
LVS:DR模型
拓扑图:
web server1
(RIP)—–> 虚拟一个VIP
/
user(CIP)——router——–switch—-(VIP/DIP)director
\
(RIP)—-> 虚拟一个VIP
web server2
1.规划ip
Client:
CIP=172.16.1.1
director:
VIP=172.16.1.100—->eth0:1(虚拟的ip)
DIP=172.16.1.200—>eth0
web server1:
VIP=172.16.1.100(指向director的VIP) —> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.10—->eth0
web server2:
VIP=172.16.1.100—> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.20—->eth0
director的配置:
ifconfig eth0 172.16.1.200/24
ifconfig eth0:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev eth0:1
yum -y install ipvsadm
ipvsadm -A -t 172.16.1.100:80 -s wlc
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.10 -w 2 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.20 -w 2 -g
web server1的配置:
ifconfig eth0 172.16.1.10/24
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i ‘$a ServerName 172.16.1.10:80′ /etc/httpd/conf/httpd.conf
echo “this is web1 server” >> /var/www/html/index.html
service httpd restart
web server2的配置:
ifconfig eth0 172.16.1.20/24
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i ‘$a ServerName 172.16.1.20:80′ /etc/httpd/conf/httpd.conf
echo “this is web2 server” >> /var/www/html/index.html
service httpd restart
DR模型的脚本
Real(web) server script
vim /etc/init.d/real
##################
#!/bin/bash
#script to start lvs-dr web server
. /etc/rc.d/init.d/functions
read -p “please input a ip for set up real server VIP:” VIP
case “$1″ in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
;;
stop)
/sbin/ifconfig lo:1 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
islothere=`/sbin/ifconfig lo:1 | grep $VIP`
isrothere=`netstat -rn | grep “lo:1″ | grep $VIP`
if [ ! "islothere" -o ! "isrothere" ];then
echo “LVS-DR real server Stopped.”
else
echo “LVS-DR real server Running.”
fi
;;
*)
echo ” Usage: $0 (start|status|stop)”
exit 1
;;
esac
###########保存退出 +x
service real start|stop|status
director script
vim /etc/init.d/ipvs
######
#!/bin/bash
#script to start lvs-dr director server
. /etc/rc.d/init.d/functions
VIP=
RIP1=
RIP2=
PORT=80
case “$1″ in
start)
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/ipvsadm -C
ipvsadm -A -t $VIP:$PORT -s wlc
ipvsadm -a -t $VIP:$PORT -r $RIP1 -w 2 -g
ipvsadm -a -t $VIP:$PORT -r $RIP2 -w 2 -g
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:1 down
/sbin/route del $VIP
/bin/rm -f /var/lock/subsys/ipvsadm
echo “ipvs is stopped….”
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo “ipvsadm is stopped…”
else
echo “ipvsadm is running…”
ipvsadm -L -n
fi
;;
*)
echo “$0: Usage: $0 (start|status|stop)”
exit 1
;;
esac
######保存退出 +x
service ipvs start|stop|status
集群的总类:
1.负载均衡集群(LB:Load Banlancing):实现将一个访问量或者任务量特别大的应用,给他
平均分配到不同的服务器上面,以提供高容量、大并发。
2.高可用集群(HA:High Avalibility):将多台计算机组合起来,避免一个服务因某台机器
出现故障,而导致服务中断的,在于保障服务的可持续性。
3.高性能集群(HP:High Performance)又叫科学运算集群:解决复杂的计算,组合起来的集群,一般要很大量
的计算机组成。suse用的比较多
集群分别代表的软件
LB:负载均衡集群(LB:Load Banlancing)
lvs(Linux Virtual Serverlinux虚拟服务器):提供更高的吞吐率、提供冗余、更灵活的实用性
lvs:ipvsadm(工作在用户空间)/(ipvs工作在内核空间)和iptables/netfilter类似
lvs的四个ip地址
1)Virtual IP address(VIP):面向用户提供服务的地址
2)Real IP address(RIP):real server的ip地址
3)Director’s IP address(DIP):director与real server连接的ip地址,DIP是配置在director上面
4)Client computer’s IP address(CIP): 客户端地址
拓扑图: (ip4)web server1
[LVS] /
user(ip1)—-(ip2)director(ip3)
\
(ip5)web server2
ip1表示CIP,ip2表示VIP,ip3表示DIP,ip4和ip5表示RIP
lvs的三个种类(或者三个模型)
1)NAT:Network address translation网络地址转换(LVS-NAT)—>目标地址转换
如何实现:
CIP–>VIP DIP–>RIP
Client————->Director————->Cluster node(server)
<————- <————-
CIP<–VIP DIP<–VIP
NAT模型一般承受5-6台server node
拓扑图:
(ip4)web server1
[LVS] /
user(ip1)—-(ip2)director(ip3)
\
(ip5)web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(CIP)D(RIP)]—–>web
涉及到目标地址转换(DNAT)
回复的过程:web—–>director[S(RIP)D(CIP)]—–>user[S(VIP)D(CIP)]
涉及到源地址转换(SNAT)
web server 的网关是指向director的DIP。
NAT模型的要求:集群节点必须在同一个网段当中,即DIP与RIP在同一个网段;RIP通常使用私有IP
地址,仅用于和DIP地址进行通信;director将处理在客户端与server之间的所有通信;server
必须把DIP设置为默认的网关;director可以实现端口映射,即VIP的端口和RIP的端口可以不一
样;server可以使用任意的操作系统;director所能支持的server的数量不多;
2)Direct routing:直接路由(LVS-DR)使用最多的模型,用于生产环境中
DR模式可以承受上百台server
拓扑图:
web server1
(RIP)—–> 虚拟一个VIP
/
user(CIP)——router——–switch—-(VIP/DIP)director
\
(RIP)—-> 虚拟一个VIP
web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(CIP)D(VIP)]—–>web
回复的过程web——->user[S(VIP)D(CIP)]
DR模型中web server和director都有两个IP,server是RIP和VIP,每个server的VIP都一样,但是RIP
不一样。
DR模型的要求:server必须和director在同一个物理网络上;RIP可以使用公网地址,使用公网地址的好处
如果director出现故障,可以用dns的A记录来指向server的RIP;director仅处理发来的请求,响应的请求
将不在通过director;通常server的网关一定不能指向director;director不能做端口映射,server可以
使用任意的操作系统;director能支持大量的server;
3)IP tunneling:IP隧道(LVS-TUN)
拓扑图:
(RIP)web server1
/
user(CIP)——router——–network cloud—-(VIP/DIP)director
\
(RIP)web server2
请求的过程:user[S(CIP)D(VIP)]——>director[S(DIP)D(RIP)]—–>web
把源[S(CIP)D(VIP)]进行了封装成DIP
回复的过程:web[S(VIP)D(CIP)]—–>user
把从director接受到的包解分装,发现源是director的VIP,目的是
user的CIP
TUN模型的要求:server和director在不同的网络上;RIP必须是公网IP地址;director只
需要处理传来的请求,同时响应的数据包一定不能经过director;director不能做端口映射;
只有支持IP隧道的操作系统才能是server
director的调度server的方法:
1)静态调度方法:fixed Scheduling Methods指director在选举server的时候不会考虑这个server当前
的连接的活动状态。
代表算法
RR(Round-robin)轮叫算法
WRR(Weighted round-robin)加权轮叫算法—>适合server的硬件不同和性能不同
DH(Destination hashing)目标地址哈希算法—->将同一个ip地址的请求发给同一个server,应 用的server为sqiud server 缓存服务器
SH(Source hashing)源地址哈希算法—->适合公司很多员工,然后自己上网的外接口有两个
2)动态调度方法:dynamic scheduling methods指director每选举server的时候会判断这个server当前连接
状态是不是很多,如果很多则排除在外,然后选择那些连接状态比较少的,如果连接状态都一样多,那就选择排在最上面的。
TCP连接 活动状态的标识是established并且有数据传输,非活动状态的标识是非established状态的连接,连接还没有断开,但是已经不在传输数据了。还有一种就是根本没有连接
代表算法
LC(Least-connection)最少连接数—->每当一个新的请求连接进来,director会查看每个 server上当前处于活动状态的个数和处于非活动状态的个数,计算方法 overhaed(当前的负载个数)=10(处于活动状态的个数)*256+10000(非活 动状态),首先那个server的overhead个数少就选那个server,如果 server的overhead相同,那就选择排列在server列表的最上方的一个server。
WLC(Weight Least-connection)是最优算法,也是默认的算法,计算方法overhead/weight(权重)
SED(Shortst Expected Delay)最少期望延迟—->是WLC的改进算法,在算overhaed值的时候不考 虑非活动状态的值,计算方法overhaed=(n+1)*256/weight,n表示 活动的个数,weight表示权重。
NQ(Never Queue)从不排队—->对SED的算法的改进,先不管overhaed是多少,只要有server的连 接状态为0,则会给你一个连接个数。
LBLC(Locality-Based Least-Connection)基于本地的最少连接,是DH算法的动态调度。
LBLCR(Locality-Based Least-Connection with Replication Scheduing)带复制的基于本地的最 少连接,时候director后面接cache服务器的,在接后面的server
LVS的实验:NAT模式
拓扑图:
(ip4)web server1
[LVS] / \
user(ip1)—-(ip2)director(ip3) ====nfs(来共享文件)
\ /
(ip5)web server2
ip地址规划
保证web server的数据一致—->1.rsync实现文件级别的同步,效率不高
2.drbd基于主机的磁盘镜像,高可用集群中用到
3.share storage共享存储 a.DAS直接附加存储 b.NAS(nfs、 samba)文件服务 c.SAN存储区域网络,本身具有冗余
1.看内核是否支持ipvs
grep -i ‘ip_vs’ /boot/config-2.6.32-71.el6.i686
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
CONFIG_IP_VS_FTP=m
2.拓扑规划ip
Client:
ip1(CIP)=192.168.1.1
Director:
ip2(VIP)=192.168.1.10 gw=192.168.1.1
ip3(DIP)=192.168.14.50
Web server1:
ip4(RIP)=192.168.14.51 gw=192.168.14.50
Web Server2:
ip5(RIP)=192.168.14.52 gw=192.168.14.50
3.Diretor的配置:
ifconfig eth0 192.168.1.10/24
ifconfig eth1 192.168.14.50
route add default gw 192.168.1.1
iptables -F
a)yum -y install ipvsadm
b)man ipvsadm
ipvsadm -D -t|u|f service-address 删除集群服务
ipvsadm -C 清空集群服务的
ipvsadm -R
ipvsadm -S [-n] 显示统计数据的
ipvsadm -d -t|u|f service-address -r server-address 从集群服务里面删除real server的
ipvsadm -L|l [options] 显示状态表或者查看
ipvsadm -Z [-t|u|f service-address] 清空计数器的
ipvsadm –set tcp tcpfin udp 设置超时时间
ipvsadm –start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm –stop-daemon state
ipvsadm -h 帮助
1.定义一个集群服务:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-O] [-M netmask] 定义集群服务
解释:-A|E -A表示add,E表示修改
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark
service-address服务地址即director (VIP)
-s指明调度方法(默认是WLC)
eg:ipvsadm -A -t 192.168.1.112:80 -s rr
2.向此集群服务器添加RealServer
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower] 向集群服务添加real server的
解释:-a|e -A表示add,E表示修改
-t|u|f t(后面可接端口号)表示tcp协议,u(后面可接端口号)表示udp协议,f表示firewall-mark
service-address服务地址 director
-r 指明real server的地址 server-address
[-g|i|m] g表示直接路由模型 i隧道模型 m表示nat模型 默认是-g DR模型
-w 表示权重 可以省略,省略表示1,选择这个之前你的算法可以支持权重
-x 连接的个数的上限
-y 连接的个数的下限
eg:ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.51 -m -w 1
ipvsadm -a -t 192.168.1.112:80 -r 192.168.14.52 -m -w 2
c)设置转发
sysctl -w net.ipv4.ip_forward=1
or
sed -i ‘/net.ipv4.ip_forward/s/0/1/’ /etc/sysctl.conf
sysctl -p
4.Web Server1的配置:
ifconfig eth0 192.168.14.51/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i ‘$a ServerName 192.168.14.51:80′ /etc/httpd/conf/httpd.conf
c)echo “this is web1 server” >> /var/www/html/index.html
d)service httpd restart
5.Web Server 的配置
ifconfig eth0 192.168.14.52/24
route add default gw 192.168.14.50
a)yum -y install httpd
b)sed -i ‘$a ServerName 192.168.14.52:80′ /etc/httpd/conf/httpd.conf
c)echo “this is web2 server” >> /var/www/html/index.html
d)service httpd restart
LVS:DR模型
拓扑图:
web server1
(RIP)—–> 虚拟一个VIP
/
user(CIP)——router——–switch—-(VIP/DIP)director
\
(RIP)—-> 虚拟一个VIP
web server2
1.规划ip
Client:
CIP=172.16.1.1
director:
VIP=172.16.1.100—->eth0:1(虚拟的ip)
DIP=172.16.1.200—>eth0
web server1:
VIP=172.16.1.100(指向director的VIP) —> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.10—->eth0
web server2:
VIP=172.16.1.100—> lo:1 (虚拟的ip) gw可以不配置 配置一定不能指向director的DIP上面
RIP=172.16.1.20—->eth0
director的配置:
ifconfig eth0 172.16.1.200/24
ifconfig eth0:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev eth0:1
yum -y install ipvsadm
ipvsadm -A -t 172.16.1.100:80 -s wlc
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.10 -w 2 -g
ipvsadm -a -t 172.16.1.100:80 -r 172.16.1.20 -w 2 -g
web server1的配置:
ifconfig eth0 172.16.1.10/24
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i ‘$a ServerName 172.16.1.10:80′ /etc/httpd/conf/httpd.conf
echo “this is web1 server” >> /var/www/html/index.html
service httpd restart
web server2的配置:
ifconfig eth0 172.16.1.20/24
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:1 172.16.1.100 broadcast 172.16.1.100 netmask 255.255.255.255 up
route add -host 172.16.1.100 dev lo:1
yum -y install httpd
sed -i ‘$a ServerName 172.16.1.20:80′ /etc/httpd/conf/httpd.conf
echo “this is web2 server” >> /var/www/html/index.html
service httpd restart
DR模型的脚本
Real(web) server script
vim /etc/init.d/real
##################
#!/bin/bash
#script to start lvs-dr web server
. /etc/rc.d/init.d/functions
read -p “please input a ip for set up real server VIP:” VIP
case “$1″ in
start)
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:1
;;
stop)
/sbin/ifconfig lo:1 down
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
islothere=`/sbin/ifconfig lo:1 | grep $VIP`
isrothere=`netstat -rn | grep “lo:1″ | grep $VIP`
if [ ! "islothere" -o ! "isrothere" ];then
echo “LVS-DR real server Stopped.”
else
echo “LVS-DR real server Running.”
fi
;;
*)
echo ” Usage: $0 (start|status|stop)”
exit 1
;;
esac
###########保存退出 +x
service real start|stop|status
director script
vim /etc/init.d/ipvs
######
#!/bin/bash
#script to start lvs-dr director server
. /etc/rc.d/init.d/functions
VIP=
RIP1=
RIP2=
PORT=80
case “$1″ in
start)
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/ipvsadm -C
ipvsadm -A -t $VIP:$PORT -s wlc
ipvsadm -a -t $VIP:$PORT -r $RIP1 -w 2 -g
ipvsadm -a -t $VIP:$PORT -r $RIP2 -w 2 -g
/bin/touch /var/lock/subsys/ipvsadm &> /dev/null
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:1 down
/sbin/route del $VIP
/bin/rm -f /var/lock/subsys/ipvsadm
echo “ipvs is stopped….”
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo “ipvsadm is stopped…”
else
echo “ipvsadm is running…”
ipvsadm -L -n
fi
;;
*)
echo “$0: Usage: $0 (start|status|stop)”
exit 1
;;
esac
######保存退出 +x
service ipvs start|stop|status
acpid电源管理通过挂起不必要的设备、降低CPU的频率或者其它方法,可以减少能量的消耗,达到省电的目的。
apmd--apmd用来监视系统用电状态,并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机
arpwatch--用来维护以太网物理地址和ip地址的对应关系
anacron 不考虑系统downtime期间的cron服务
atd--运行用户用at命令调度的任务。也在系统负荷比较低时运行批处理任务
autofs--当您需要时自动转载文件系统,而当您不需要时自动卸载
chargen--tcp版本的chargen server
chargen-udp--udp版本的chargen server
crond--周期地运行用户调度的任务。比起传统的unix版本添加了不少属性,而且更安全,配置更简单
daytime--tcp版本的daytime server
daytime-udp--udp版本的daytime server
echo--tcp版本的echo server
echo-udp--udp版本的echo server
eklogin--接受rlogin会话鉴证和用kerberos5加密的一种服务
finger--用于应答finger请求的服务
gpm--为文本模式下的linux程序提供了鼠标的支持。它也支持控制台鼠标的拷贝,粘帖操作以及弹出式菜单 (必须)
gssftp--接受可被kerberos5验证的ftp连接
httpd--http是著名的www服务器,可用来提供html文件以及cgi动态内容服务
identd--提供验证身份的方法
ipchains--ipchains包过滤防火墙
iptables--iptables包过滤防火墙
ipvsadm--调用ipvsadm来建立和维护ipvs路由选择表
isdn--启用isdn(综合服务数字网)服务
kadmin--更改在主控kdc中使用本机的kadmin工具,或透过kadmin服务来完成
kdcrotate--设置配置文件/etc/krb5.con中的kdcs表项
keytable--该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表
klogin--接受bsd方式的rlogin会话,但需要使用kerbeos5验证
kprop--是否允许kdc接收来的master kdc的升级
krb5-telnet--允许普通的telnet登陆,但也可使用kerberos5验证
krb524--是以改变kerberos5到kerberosIV的赁证
krb5kdc--开启kerberosIV和5所需的连接以获得赁证
kshell--接受rshell命令鉴证和用kerberos加密的服务
kudzu--运行硬件检测,并可选择性地设置硬件变化
lpd--lpd是系统打印守护程序,负责将lpr等程序提交给打印作业
netfs--负责装载/卸载nfs、samba、ncp文件系统
network--激活/关闭启动时的各个网络接口 (必须)
nfs--nfs是一个流行的基于tcp/ip网络的文件共享协议.该服务提供了nfs文件共享服务 (nfs :Net File System的简写,即网络文件系统.
NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。
nfslock--提供nfs文件上锁功能
nscd--该服务负责密码和组的查询,并且缓冲查询结果
portmap--portmap用来支持rpc连接,rpc被用于nfs以及nis等服务
postgresql--postgresql关系数据库引擎
random--保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的
rlogin--rlogin程序服务,提供来自远程信任主机的注册功能
routed--该守护程序支持rip协议的自动ip路由表维护.rip主要使用在小型网络上,大一点的网络就需要
复杂一点的协议
rsh--提供rcmd程序或者rsh程序的服务
rstatd--rstat协议允许网络上的用户获得同一网络上各机器的性能参数
rsync--对ftp服务的一个很好的附加,允许循环码求和校验等
rusersd--该服务使网络用户可以定位同一网络上的其他用户
rwalld--rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为
rwhod--允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似
smb--启动和关闭smbd和nmbd精灵程序以提供smb网络服务
snortd--一个轻量级的网络入侵检测工具
swat--samba网络配置工具,可以通过流览器的901端口连接使用swat
syslog--syslog是操作系统提供一种机制,守护程序通常使用这些机制将各种信息写到各个系统日志文件 (必须)
telnet--提供telnet服务,使用未加密的用户/密码组进行验证
time--tcp版本的rfc 868 time server
time-udp--udp版本的rfc 868 time server
webmin--webmin是基于web的集系统管理与网络管理于一身的强大管理工具
xfs--在引导和关闭时启动和停上x字体服务,并可能重新生成字体表 (必须)
xinetd--因特网操作服务程序。提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全,
监控网络对各种它管理的服务的需求,并在要的时候启动相应的服务程序
ypbind--实现网络信息服务的服务器端
apmd--apmd用来监视系统用电状态,并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机
arpwatch--用来维护以太网物理地址和ip地址的对应关系
anacron 不考虑系统downtime期间的cron服务
atd--运行用户用at命令调度的任务。也在系统负荷比较低时运行批处理任务
autofs--当您需要时自动转载文件系统,而当您不需要时自动卸载
chargen--tcp版本的chargen server
chargen-udp--udp版本的chargen server
crond--周期地运行用户调度的任务。比起传统的unix版本添加了不少属性,而且更安全,配置更简单
daytime--tcp版本的daytime server
daytime-udp--udp版本的daytime server
echo--tcp版本的echo server
echo-udp--udp版本的echo server
eklogin--接受rlogin会话鉴证和用kerberos5加密的一种服务
finger--用于应答finger请求的服务
gpm--为文本模式下的linux程序提供了鼠标的支持。它也支持控制台鼠标的拷贝,粘帖操作以及弹出式菜单 (必须)
gssftp--接受可被kerberos5验证的ftp连接
httpd--http是著名的www服务器,可用来提供html文件以及cgi动态内容服务
identd--提供验证身份的方法
ipchains--ipchains包过滤防火墙
iptables--iptables包过滤防火墙
ipvsadm--调用ipvsadm来建立和维护ipvs路由选择表
isdn--启用isdn(综合服务数字网)服务
kadmin--更改在主控kdc中使用本机的kadmin工具,或透过kadmin服务来完成
kdcrotate--设置配置文件/etc/krb5.con中的kdcs表项
keytable--该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表
klogin--接受bsd方式的rlogin会话,但需要使用kerbeos5验证
kprop--是否允许kdc接收来的master kdc的升级
krb5-telnet--允许普通的telnet登陆,但也可使用kerberos5验证
krb524--是以改变kerberos5到kerberosIV的赁证
krb5kdc--开启kerberosIV和5所需的连接以获得赁证
kshell--接受rshell命令鉴证和用kerberos加密的服务
kudzu--运行硬件检测,并可选择性地设置硬件变化
lpd--lpd是系统打印守护程序,负责将lpr等程序提交给打印作业
netfs--负责装载/卸载nfs、samba、ncp文件系统
network--激活/关闭启动时的各个网络接口 (必须)
nfs--nfs是一个流行的基于tcp/ip网络的文件共享协议.该服务提供了nfs文件共享服务 (nfs :Net File System的简写,即网络文件系统.
NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。
nfslock--提供nfs文件上锁功能
nscd--该服务负责密码和组的查询,并且缓冲查询结果
portmap--portmap用来支持rpc连接,rpc被用于nfs以及nis等服务
postgresql--postgresql关系数据库引擎
random--保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的
rlogin--rlogin程序服务,提供来自远程信任主机的注册功能
routed--该守护程序支持rip协议的自动ip路由表维护.rip主要使用在小型网络上,大一点的网络就需要
复杂一点的协议
rsh--提供rcmd程序或者rsh程序的服务
rstatd--rstat协议允许网络上的用户获得同一网络上各机器的性能参数
rsync--对ftp服务的一个很好的附加,允许循环码求和校验等
rusersd--该服务使网络用户可以定位同一网络上的其他用户
rwalld--rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为
rwhod--允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似
smb--启动和关闭smbd和nmbd精灵程序以提供smb网络服务
snortd--一个轻量级的网络入侵检测工具
swat--samba网络配置工具,可以通过流览器的901端口连接使用swat
syslog--syslog是操作系统提供一种机制,守护程序通常使用这些机制将各种信息写到各个系统日志文件 (必须)
telnet--提供telnet服务,使用未加密的用户/密码组进行验证
time--tcp版本的rfc 868 time server
time-udp--udp版本的rfc 868 time server
webmin--webmin是基于web的集系统管理与网络管理于一身的强大管理工具
xfs--在引导和关闭时启动和停上x字体服务,并可能重新生成字体表 (必须)
xinetd--因特网操作服务程序。提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全,
监控网络对各种它管理的服务的需求,并在要的时候启动相应的服务程序
ypbind--实现网络信息服务的服务器端
1.查找文件后缀是log的三天前的文件删除和三天内没修改过的文件
find / -name ”.log” -mtime +3 -exec rm fr {} ; find /log ! -mtime -3
2.写一个脚本将目录下大于100kb的文件移动到/tmp下
fimd / -size +100k -exec mv {} /tmp ;
3.将数据库备份并打包传递到远程服务器192.168.1.1的/backup目录下
mysqldump -u root -p database > database.sql ;tar -czvf database.tar.gz database.sql ; rsync -avP ./database.tar.gz root@192.168.1.1:/backup
4.日志如下统计访问ip最多的前10个
awk ’{print $1}’ *.log | sort | uniq -c | sort -nr | head -n
5.把/usr/local/替换成其他的目录
sed -i ’s//usr/local//目录/g’ 文件
6.查看服务器程序运行级别和修改运行级别,和服务的运行级别
查看:who -r 修改:etc/inittab 服务运行级别chkconfig –list vsftp 修改:chkconfig –level 345 vsftp on
7.用tcpdump截取本机ip 192.168.23.1 80端口的包
tcpdump tcp port 80 host 192.168.23.1
Tcpdump -w test host 192.168.1.1 and tcp port 80
8.用tcpdump截取ip 192.168.23.1访问主机 ip 192.168.23.2 的80端口的包
tcpdump host 192.168.23.1 and 192.168.23.2 and dst port 80
9.用iptables将192.168.0.100的80端口映射到59.15.17.231的8080端口
iptables -t nat -A PREROUTINT -p tcp -d 192.168.0.100 –dport 80 -j DNAT –to-destination 59.15.17.231:8080
10.本机的80端口转发到8080
iptables -t nat -A PREROUTING -p tcp –dport -j REDIRECT –to-ports 8080
11.禁止一个用户登录,但可以使用ftp
修改etc/passwd 最后一个字段 改成/bin/nologin
12.获取1.txt中第二行第三列的数据,输出到2.txt
cat 1.txt|awk ’NR==2{print $3}’ > 2.txt
13.查看Linux系统当前单个共享内存段的最大值
ipcs -a
14.用什么命令查询指定IP地址的服务器端口
nmap 127.0.0.1
15.如何让history命令显示具体时间
HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S ”
16.查看Linux系统当前加载的库文件
lsof |grep /lib
17.查看当前系统某一硬件的驱动版本。比如网卡
ethtool –i eth0
18.DNS服务器有哪三种类型
主 从 转发
19.查看3306端口被谁占用
lsof -i:3306
20.查看占用内存最大的5个进程
ps -aux|sort -k4nr|head -n 5
21.查看占用内存最大的进程的PID和VSZ
ps -aux|sort -k5nr|awk ’BEGIN{print ”PID VSZ”}{print $2,$5}’|awk ’NR<3′
22. lsof -p 12 看进程号为12的进程打开了哪些文件
23.同时执行a和b等a和b都执行完执行c
#!/bin/bash
./a.sh &
./b.sh &
wait
echo adf
24.snmpdf 通过SNMP监视远程主机的磁盘空间
snmpdf -v 1 -c public localhost
获取192.168.6.53的所有开放端口状态
snmpnetstat -v 2c -c public -a 192.168.6.53
25.简述编译kernel的大体步骤
(1)下载解压缩新版本的内核到/usr/src下
(2)将以前版本链接删除,建立新的连接
(3)编译内核,编译模块,安装模块
(4)修改grub.conf ,然后重启
26.diff/patch的作用和用法
命令diff A B > C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。
patch A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁
27.执行 bin/myprog 返回0 打印ok 1打印bad 2打印error 其他打印 wrony
./bin/myprog
if [[ $? = 0 ]];then
echo”OK”
elif [[ $? =1 ]];then
echo”bad”
else
echo”error”
fi
28.求一组数的最大值和最小值
#!/bin/sh
min=$1
max=$1
sum=$1
shift
while [ $# -gt 0 ]
do
if [ $min -gt $1 ]
then
min=$1
fi
if [ $max -lt $1 ]
then
max=$1
fi
sum=`expr $sum +$1`
shift
done
sum=`echo ”$sum/5″`|bc -l
echo min=$min
echo max=$max
echo aver=$sum
28.执行可执行程序test并把输出和错误写到err.log
./test > & err.log
29.用telnet连接校内服务器mail.xiaonei.com 发一封信
mail -v -s ”hello” root@192.168.23.1
30.添加路由表并查看
route add -net 203.208.39.104 netmask 255.255.255.255 gw 192.168.1.1
netstat –r
31.正则匹配ip
((25[0-5]|2[0-4]d|1dd|[1-9]d|d).){3}(25[0-5]|2[0-4]d|1dd|[1-9]d|[1-9])
find / -name ”.log” -mtime +3 -exec rm fr {} ; find /log ! -mtime -3
2.写一个脚本将目录下大于100kb的文件移动到/tmp下
fimd / -size +100k -exec mv {} /tmp ;
3.将数据库备份并打包传递到远程服务器192.168.1.1的/backup目录下
mysqldump -u root -p database > database.sql ;tar -czvf database.tar.gz database.sql ; rsync -avP ./database.tar.gz root@192.168.1.1:/backup
4.日志如下统计访问ip最多的前10个
awk ’{print $1}’ *.log | sort | uniq -c | sort -nr | head -n
5.把/usr/local/替换成其他的目录
sed -i ’s//usr/local//目录/g’ 文件
6.查看服务器程序运行级别和修改运行级别,和服务的运行级别
查看:who -r 修改:etc/inittab 服务运行级别chkconfig –list vsftp 修改:chkconfig –level 345 vsftp on
7.用tcpdump截取本机ip 192.168.23.1 80端口的包
tcpdump tcp port 80 host 192.168.23.1
Tcpdump -w test host 192.168.1.1 and tcp port 80
8.用tcpdump截取ip 192.168.23.1访问主机 ip 192.168.23.2 的80端口的包
tcpdump host 192.168.23.1 and 192.168.23.2 and dst port 80
9.用iptables将192.168.0.100的80端口映射到59.15.17.231的8080端口
iptables -t nat -A PREROUTINT -p tcp -d 192.168.0.100 –dport 80 -j DNAT –to-destination 59.15.17.231:8080
10.本机的80端口转发到8080
iptables -t nat -A PREROUTING -p tcp –dport -j REDIRECT –to-ports 8080
11.禁止一个用户登录,但可以使用ftp
修改etc/passwd 最后一个字段 改成/bin/nologin
12.获取1.txt中第二行第三列的数据,输出到2.txt
cat 1.txt|awk ’NR==2{print $3}’ > 2.txt
13.查看Linux系统当前单个共享内存段的最大值
ipcs -a
14.用什么命令查询指定IP地址的服务器端口
nmap 127.0.0.1
15.如何让history命令显示具体时间
HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S ”
16.查看Linux系统当前加载的库文件
lsof |grep /lib
17.查看当前系统某一硬件的驱动版本。比如网卡
ethtool –i eth0
18.DNS服务器有哪三种类型
主 从 转发
19.查看3306端口被谁占用
lsof -i:3306
20.查看占用内存最大的5个进程
ps -aux|sort -k4nr|head -n 5
21.查看占用内存最大的进程的PID和VSZ
ps -aux|sort -k5nr|awk ’BEGIN{print ”PID VSZ”}{print $2,$5}’|awk ’NR<3′
22. lsof -p 12 看进程号为12的进程打开了哪些文件
23.同时执行a和b等a和b都执行完执行c
#!/bin/bash
./a.sh &
./b.sh &
wait
echo adf
24.snmpdf 通过SNMP监视远程主机的磁盘空间
snmpdf -v 1 -c public localhost
获取192.168.6.53的所有开放端口状态
snmpnetstat -v 2c -c public -a 192.168.6.53
25.简述编译kernel的大体步骤
(1)下载解压缩新版本的内核到/usr/src下
(2)将以前版本链接删除,建立新的连接
(3)编译内核,编译模块,安装模块
(4)修改grub.conf ,然后重启
26.diff/patch的作用和用法
命令diff A B > C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。
patch A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁
27.执行 bin/myprog 返回0 打印ok 1打印bad 2打印error 其他打印 wrony
./bin/myprog
if [[ $? = 0 ]];then
echo”OK”
elif [[ $? =1 ]];then
echo”bad”
else
echo”error”
fi
28.求一组数的最大值和最小值
#!/bin/sh
min=$1
max=$1
sum=$1
shift
while [ $# -gt 0 ]
do
if [ $min -gt $1 ]
then
min=$1
fi
if [ $max -lt $1 ]
then
max=$1
fi
sum=`expr $sum +$1`
shift
done
sum=`echo ”$sum/5″`|bc -l
echo min=$min
echo max=$max
echo aver=$sum
28.执行可执行程序test并把输出和错误写到err.log
./test > & err.log
29.用telnet连接校内服务器mail.xiaonei.com 发一封信
mail -v -s ”hello” root@192.168.23.1
30.添加路由表并查看
route add -net 203.208.39.104 netmask 255.255.255.255 gw 192.168.1.1
netstat –r
31.正则匹配ip
((25[0-5]|2[0-4]d|1dd|[1-9]d|d).){3}(25[0-5]|2[0-4]d|1dd|[1-9]d|[1-9])






