Linux Cluster(二)

LVS-dr

============================================================================

概述:



============================================================================

ipvs-dr类型的实现

ipvs-dr设计要点:

dr模型中,各主机上均需要配置VIP,解决地址冲突的方式有三种:

(1)在前端网关做静态绑定;

(2)在各RS使用arptables;

(3)在各RS修改内核参数,来限制arp响应和通告的级别;

  • 限制响应级别:arp_ignore

0:默认值,表示可使用本地任意接口上配置的任意地址进行响应;

1: 仅在请求的目标IP配置在本地主机的接收到请求报文接口上时,才给予响应;

  • 限制通告级别:arp_announce

    0:默认值,把本机上的所有接口的所有信息向每个接口上的网络进行通告;

    1:尽量避免向非直接连接网络进行通告;

    2:必须避免向非本地直接连接网络进行通告;

ipvs-nat部署示例

1.实验前准备

  • 拓扑图

  • 各主机上均需要配置VIP;
  • 在各RS修改内核参数,来限制arp响应和通告的级别;
  • RIP与DIP在同一IP网络;RIP的网关不能指向DIP;
  • RS跟Director要在同一个物理网络;


2.实验测试环境搭建

准备三台虚拟主机,一台作为调度器,另外两台作为RS服务器,并保证RIP与DIP在同一IP网络;接着,修改两台RS服务器的内核参数,并设置两台RS主机上的VIP(本地lo网卡别名)及网关;然后再配置调度器(一块网卡)的VIP(物理网卡别名);

 1)首先我们要配置调度器的物理网卡别名(即VIP),主要通信还是使用DIP,别名只是用来接收目标为VIP的通信

 

  2)接下来我们首先要修改两台RS的内核参数arp_ignore和arp_announce,然后配置其本地lo网卡的网卡别名作为VIP,因为实际工作中,RS服务器不只一台,所以如果手动去修改的话,很费事,所以,在这里我写了一个脚本,可以一步到位,脚本源码如下:

#! /bin/bash
#
vip=10.1.252.73
mask=‘255.255.255.255‘

case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

    ifconfig lo:0 $vip netmask $mask broadcast $vip up   # 配置网卡lo的别名为VIP
    route add -host $vip dev lo:0
    ;;
stop)
    ifconfig lo:0 down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
*)
    echo "Usage $(basename $0) start|stop"
    exit 1
    ;;
esac

  执行此脚本后,RS的VIP配置如下(两台RS的VIP相同):

 3)保证调度器(DIP)和RS(RIP)在同一网络,我这里使用的都是桥接模式下自动获取的ip地址。

现在我们用客户端主机(CentOS 6)去ping 10.1.252.73,可以发现,响应的只有调度器上的网卡,可见我们配置在两台RS主机上的VIP没有响应,这样就保证了,请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client,如下:

 

 如上,整个环境就已经搭建完成了!

3.使用ipvsadm定义集群,并测试

# 添加集群服务,-t 指明地址和端口(集群服务);-s 调度算法为加权轮询(wrr)
[[email protected] ~]# ipvsadm -A -t 10.1.252.73:80 -s wrr

# 在集群服务上添加RS,-r指明RS,-g为lvs-dr类型,-w指明权重
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:80 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:80 -r 10.1.249.203 -g -w 2

# 查看添加的集群服务和规则
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:80 wrr
  -> 10.1.249.203:80              Route   2      0          0         
  -> 10.1.252.37:80               Route   1      0          0

 使用客户端(CentOS 6)做测试,去访问调度器上的web服务(伪装的),真正响应的是RS是服务器,响应方式为加权轮询

[[email protected] ~]# for i in {1..10};do curl http://10.1.252.73; done
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS2</h1>
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:80 wrr
  -> 10.1.249.203:80              Route   2      0          6         
  -> 10.1.252.37:80               Route   1      0          4

附加:

  • RS的预配置脚本:

  • VS的配置脚本:

FWM:FireWall Mark 

作用:

  • 借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务进行调度;

打标记方法(在Director主机):

  • # iptables -t mangle -A PREROUTING -d $vip -p $proto --dport $port -j MARK --set-mark NUMBER

基于标记定义集群服务:

  • # ipvsadm -A -f NUMBER [options]

实验:

  1.我们现在再添加一个mysql的集群服务,如下:

  1)首先在两台RS主机上授权一个相同的可远程登录的用户

[[email protected] ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

# 授权的用户为test,主机为10.1.0.0网段中的任何主机,密码为testpass
MariaDB [(none)]> GRANT all ON *.* TO ‘test‘@‘10.1.%.%‘ IDENTIFIED BY ‘testpass‘; 
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> create database mydb; # 创建一个数据库
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)
MariaDB [(none)]> exit
Bye

如上为RS2的主机的授权,RS1的主机授权方法同上(为了以示区别,RS1不创建数据库),这里不再给出,授权好之后,要在远程主机上测试看能否登陆,我这里已经测试过了,没有问题.

 2)现在我们在上例中lvs-dr类型中再添加一个mysql的集群服务,如下:

[[email protected] ~]# ipvsadm -A -t 10.1.252.73:3306 -s rr

[[email protected] ~]# ipvsadm -a -t 10.1.252.73:3306 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:3306 -r 10.1.249.203 -g -w 1

[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:80 wrr
  -> 10.1.249.203:80              Route   2      0          0         
  -> 10.1.252.37:80               Route   1      0          0         
TCP  10.1.252.73:3306 rr
  -> 10.1.249.203:3306            Route   1      0          0         
  -> 10.1.252.37:3306             Route   1      0          0

 3)测试服务,远程登录调度器的mysql服务(伪装的),可以看到真正响应的是后端的RS主机上的mysql,并且以轮询的方式响应

[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |# RS2响应
| mysql              |
| performance_schema |
| test               |
+--------------------+
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema | # RS1响应
| test               |
| vsftpd             |
+--------------------+
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               | # RS2 响应
| mysql              |
| performance_schema |
| test               |
+--------------------+
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              | # RS1响应
| performance_schema |
| test               |
| vsftpd             |
+--------------------+

 4)现在我们同时访问web服务和mysql服务,发现他们是两个各自独立的服务,每个服独立调度,各自轮询,如下:

[[email protected] ~]# curl http://10.1.252.73
<h1>RS2</h1>
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               | # RS2
| mysql              |
| performance_schema |
| test               |
+--------------------+
[[email protected] ~]# curl http://10.1.252.73
<h1>RS1</h1>
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               | # RS2
| mysql              |
| performance_schema |
| test               |
+--------------------+
[[email protected] ~]# curl http://10.1.252.73
<h1>RS2</h1>
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema | # RS1
| test               |
| vsftpd             |
+--------------------+

2.现在我们借助于防火墙标记来分类报文,标记定义这两个不同的应用使用同一个集群服务进行调度;

 1)首先我们记住防火墙来打标记,把80服务和3306服务,都标记为11

[[email protected] ~]# iptables -t mangle -A PREROUTING -d 10.1.252.73 -p tcp -m multiport --dports 80,3306 -j MARK --set-mark 11
[[email protected] ~]# iptables -t mangle -vnL
Chain PREROUTING (policy ACCEPT 228 packets, 21439 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       tcp  --  *      *       0.0.0.0/0            10.1.252.73          multiport dports 80,3306 MARK set 0xb

Chain INPUT (policy ACCEPT 219 packets, 20737 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 136 packets, 12838 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 136 packets, 12838 bytes)
 pkts bytes target     prot opt in     out     source               destination

 2)现在我们根据防火墙定义的标记来定义集群服务,如下:

[[email protected] ~]# ipvsadm -C # 把之前定义的规则清空

[[email protected] ~]# ipvsadm -A -f 11 -s wrr
[[email protected] ~]# ipvsadm -a -f 11 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -f 11 -r 10.1.249.203 -g -w 1
[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  11 wrr
  -> 10.1.249.203:0               Route   1      0          0         
  -> 10.1.252.37:0                Route   1      0          0

 3)测试,可见现在两个服务当做一类请求来进行调度,被放在一起进行轮询,而不是各自轮询;

[[email protected] ~]# curl http://10.1.252.73
<h1>RS2</h1>
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| vsftpd             |
+--------------------+
[[email protected] ~]# curl http://10.1.252.73
<h1>RS2</h1>
[[email protected] ~]# mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
[[email protected] ~]# curl http://10.1.252.73
<h1>RS1</h1>

lvs persistence:持久连接

作用:

  • 持久连接模板:实现无论使用任何算法,在一段时间内,实现将来自同一个地址的请求始终发往同一个RS;

port Affinity:

  • 每端口持久:每集群服务单独定义,并定义其持久性;
  • 每防火墙标记持久:基于防火墙标记定义持久的集群服务;可实现将多个端口上的应用统一调度,即所谓的port Affinity;
  • 每客户端持久:基于0端口定义集群服务,即将客户端对所有应用的请求统统调度至后端主机,而且可使用持久连接进行绑定;

实验:

  1.没有做持久连接之前,以轮询的方式进行调度,如下:

[[email protected] ~]# ipvsadm -A -t 10.1.252.73:80 -s rr
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:80 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:80 -r 10.1.249.203 -g -w 1

[[email protected] ~]# for i in {1..10};do curl http://10.1.252.73; done
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>
<h1>RS2</h1>
<h1>RS1</h1>

[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:80 rr
  -> 10.1.249.203:80              Route   1      0          5         
  -> 10.1.252.37:80               Route   1      0          5

  2.现在我们定义持久连接时间为60秒,再做测试发现,在规定的时间内将始终访问的是第一次匹配到的RS;

[[email protected] ~]# ipvsadm -E -t 10.1.252.73:80 -s rr -p 60
[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:80 rr persistent 60
  -> 10.1.249.203:80              Route   1      0          0         
  -> 10.1.252.37:80               Route   1      0          0         

[[email protected] ~]# for i in {1..10};do curl http://10.1.252.73; done
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>

 3.现在我们结合之前的FWM机制,实现端口姻亲关系,统一调度持久连接

[[email protected] ~]# ipvsadm -C

[[email protected] ~]# ipvsadm -A -f 11 -s rr -p 

[[email protected] ~]# ipvsadm -a -f 11 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -f 11 -r 10.1.249.203 -g -w 1

[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  11 rr persistent 360
  -> 10.1.249.203:0               Route   1      0          0         
  -> 10.1.252.37:0                Route   1      0          0

  测试,发现两个服务持久连接并进行绑定

[[email protected] ~]# for i in {1..10};do curl http://10.1.252.73; done
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
[[email protected] ~]# for i in {1..10};do mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘; done
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

  4.基于0端口定义集群服务,将客户端对所有应用的请求统统调度至后端主机,而且可使用持久连接进行绑定

[[email protected] ~]# ipvsadm -C

[[email protected] ~]# ipvsadm -A -t 10.1.252.73:0 -s rr -p

[[email protected] ~]# ipvsadm -a -t 10.1.252.73:0 -r 10.1.252.37 -g -w 1
[[email protected] ~]# ipvsadm -a -t 10.1.252.73:0 -r 10.1.249.203 -g -w 1

[[email protected] ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.252.73:0 rr persistent 360
  -> 10.1.249.203:0               Route   1      0          0         
  -> 10.1.252.37:0                Route   1      0          0

 测试,发现不管是什么服务,统统调度至后端主机,而且,持久连接绑定

[[email protected] ~]# for i in {1..10};do curl http://10.1.252.73; done
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>
<h1>RS2</h1>

[[email protected] ~]# for i in {1..10};do mysql -h10.1.252.73 -utest -ptestpass -e ‘show databases‘; done
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               | # RS2
| mysql              |
| performance_schema |
| test               |
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

[[email protected] ~]# ssh [email protected] 
The authenticity of host ‘10.1.252.73 (10.1.252.73)‘ can‘t be established.
RSA key fingerprint is cf:7d:49:75:55:54:45:88:a3:dd:ff:f3:87:be:3f:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.1.252.73‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
Last login: Sun Oct 30 17:22:47 2016 from 10.1.250.25

[[email protected] ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.249.203  netmask 255.255.0.0  broadcast 10.1.255.255
        inet6 fe80::20c:29ff:fe2b:b6e7  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2b:b6:e7  txqueuelen 1000  (Ethernet)
        RX packets 42213  bytes 3831451 (3.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3329  bytes 382656 (373.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 456  bytes 44634 (43.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 456  bytes 44634 (43.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 10.1.252.73  netmask 255.255.255.255
        loop  txqueuelen 0  (Local Loopback)

保存及重载规则:

保存:建议保存至/etc/sysconfig/ipvsadm

  • ipvsadm-save > /PATH/TO/IPVSADM_FILE
  • ipvsadm -S > /PATH/TO/IPVSADM_FILE
  • systemctl stop ipvsadm.service

重载:

  • ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
  • ipvsadm -R < /PATH/FROM/IPVSADM_FILE
  • systemctl restart ipvsadm.service

示例:

[[email protected] ~]# cat /usr/lib/systemd/system/ipvsadm.service 
[Unit]
Description=Initialise the Linux Virtual Server
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"  
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"
ExecStop=/sbin/ipvsadm -C
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

[[email protected] ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[[email protected] ~]# cat /etc/sysconfig/ipvsadm
-A -t 10.1.252.73:0 -s rr -p 360
-a -t 10.1.252.73:0 -r 10.1.249.203:0 -g -w 1
-a -t 10.1.252.73:0 -r 10.1.252.37:0 -g -w 1

考虑:

时间: 2024-10-11 05:48:35

Linux Cluster(二)的相关文章

linux cluster LB集群之LVS

Linux Cluster 类型分类: 负载均衡集群:Load balancing 高可用集群:High Avaiability 高性能集群:High Performance 及分布式系统 LB:LB的实现是在提供相同服务的多台服务器之前添加调度器即负载均衡集群 工作协议层来划分: tcp:根据请求报文中的目标地址和端口进行调度: 应用层:根据请求的内容进行调度,而且此种调度为"代理"方式: lvs: Linux Virtual Server,虚拟服务, 由章文嵩研发工作于layer4

攻城狮在路上(叁)Linux(二十九)--- 完整备份工具:dump以及restore

一.dump命令: 该命令既可以针对整个文件系统进行备份,也可以仅针对目录来备份.还可以指定不同的备份等级(-0~-9共10个等级). dump -W:列出在/etc/fstab中具有dump设置的分区是否备份过. 命令格式: dump [-Suvj] [-level] [-f 备份文件] 待备份数据 参数说明: -S:仅列出后面的待备份数据所需要的磁盘空间大小. -u:将这次dump的时间记录到/etc/dumpdates文件中. -v:将dump的文件过程显示出来. -j:加入bzip2的支

攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建

swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap被使用的时候,主机的硬盘灯就会闪烁不停. 本篇介绍两种方式:1.设置一个swap分区   2.创建一个虚拟内存的文件. 一.使用物理分区构建swap: 1.首先是分区: A.fdisk /dev/sda; <== 根据后续提示创建一个分区. B.修改分区的ID,因为fdisk默认将分区的ID作为文件

攻城狮在路上(叁)Linux(二十六)--- linux文件系统的特殊查看与操作

一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若block大小为1k,则boot sector和super block各占一个block. 4.若block大于1K(2K/4K)时,则两者都位于第一个block中. 二.磁盘空间的浪费问题:暂不考虑. 三.利用GUN的parted命令进行分区行为: 因为fdisk不支持高于2TB的分区. 命令格式: pa

攻城狮在路上(叁)Linux(二十四)--- linux设置开机挂载及镜像文件挂载

虽然可以手动进行文件系统的挂载,但是每次都手动挂载就会很麻烦,开机挂载的目的就是实现文件系统的自动挂载. 一.开机挂载:/etc/fstab及/etc/mtab 主要是通过修改/etc/fstab文件的配置来实现. fstab是开机时的设置,实际文件系统的挂载是记录到/etc/mtab和/proc/mounts这两个文件中. 1.系统挂载的限制: A.根目录/必须挂载,而且一定是最先挂载的,要先于其他mount point. B.其他挂载点必须为已新建的目录,可以任意指定. C.所有挂载点在同一

攻城狮在路上(叁)Linux(二十七)--- 压缩与打包之常见的压缩命令

前面讲到,linux中的后缀名没有特殊的意义,一般是作为不同文件类型的标识而已.下面是与打包.压缩相关的后缀名介绍: *.z:compress程序压缩文件 *.gz:gzip程序压缩文件 *.bz2:bzip2压缩文件 *.tar:tar打包,未压缩 *.tar.gz:tar打包,经过gzip压缩 *.tar.bz2:tar打包,经过bzip2压缩 一般经过打包或者压缩处理的文件通过后缀名来进行区别. 一.compress:该命令比较古老,centos默认未安装,可以使用gzip代替. 二.gz

攻城狮在路上(叁)Linux(二十三)--- linux磁盘参数修改(设备代码、设备名)

一.mknod:设置设备代码 linux中,所有的设备都是用文件来表示,文件通过major与minor数值来判断. major为主设备代码,minor为设备代码(需要查询),示例如下: /dev/hda ---------major:3------minor:0~63 /dev/hdb----------major:3------minor:64~127 /dev/sda----------major:8------minor:0~15 ... 命令格式:mknod 设备名 [bcp] [maj

攻城狮在路上(叁)Linux(二十二)--- linux磁盘挂载与卸载 mount umount

挂载就是将文件系统与目录结合的操作.挂载点就是目录,该目录就是进入分区或文件系统的入口. 一.挂载前的注意事项: 1.单一文件系统不应该被重复挂载在不同的挂载点中. 2.单一目录不应该重复挂载多个文件系统. 3.即将作为挂载点的目录理论上应该都是空目录才对. 注意:对应2和3,如果要挂载的目录不为空,那么挂载了新的文件系统之后,原来的目录会暂时消失(并非覆盖掉),系统会显示最新挂载的文件系统.新分区被卸载之后,原来的文件系统会重新显示出来. 二.命令介绍 mount [-t 文件系统] [-L

Linux Cluster

http://www.geekpeek.net/linux-cluster-corosync-pacemaker/ Linux Cluster Part 1 – Install Corosync and Pacemaker on CentOS 6 I have been using Linux Cluster Engine called Corosync and Linux Cluster Resource Manager called Pacemaker for a while now and

概念.linux Cluster

Linux Cluster:linux 集群 (或成为分布式系统) Cluster:计算机集合.为解决某个特定问题组合起来: 系统扩展的方式: Scale Up:向上扩展:更好的硬件 Scale Out:向外扩展: 更多的机器 Linux Cluster类型: LB:Load Balancing,负载均衡: SPoF(单点故障), 瓶径 HA:High Availiablity, 高可用: A=MTBF/(MTBF+MTTR) 平均无故障时间/(平均无故障时间+平均修复时间) (0,1), 90