更新时间:2022-10-05 12:30:52
上一篇Linux下编译安装LAMP并分离为多台服务器写的是LAMP分离为多台主机;但是由于是各自独立;如需要更新或用户更新数据时;需要每台机器单独更新;且如httpd服务器等都是需要多台的话就会出现数据不同步的现象;现在就上一篇进行补全;实现多台httpd主机利用NFS文件系统基于RPC协议来同步更新数据。
大致规划:
网段:172.16.251.
1台DNS服务器(172.16.251.84)
2台httpd服务器(172.16.251.85/86)
1台php服务器(172.16.251.87)
1台mysql服务器(172.16.251.88)
做了四个域名解析到2台httpd服务器上:
域名:www.myadmin.cn www.soul.org www.pipi.com www.dark.net
一、NFS和RPC定义
网络文件系统(Network File System,NFS),一种使用于分散式文件系统的协议,由SUN公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在Unix系统间实现磁盘文件共享的一种方法。NFS的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。目前最新版本为NFSv4。
远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。
二、安装配置NFS服务
NFS是由nfs-utils软件包提供的;可以先查看系统上是否安装;如未安装可以先使用yum来安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[Linux87] #rpm -qa nfs*
nfs - utils - lib - 1.1 . 5 - 6.el6 .x86_64
nfs - utils - 1.2 . 3 - 39.el6 .x86_64
nfs4 - acl - tools - 0.3 . 3 - 6.el6 .x86_64
[Linux87] #rpm -ql nfs-utils 查看该包安装生成了哪些文件
/ etc / nfsmount.conf
/ etc / rc.d / init.d / nfs
/ etc / rc.d / init.d / nfslock
/ etc / rc.d / init.d / rpcgssd
/ etc / rc.d / init.d / rpcidmapd
/ etc / rc.d / init.d / rpcsvcgssd
/ etc / request - key.d / id_resolver.conf
安装成功后既可启动: [Linux87] #service nfs start
Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ] #默认就启动上述这么多服务 [Linux87] #rpcinfo 可以查看详细信息
program version netid address service owner
100000 4 tcp 0.0 . 0.0 . 0.111 portmapper superuser
100000 3 tcp 0.0 . 0.0 . 0.111 portmapper superuser
100000 2 tcp 0.0 . 0.0 . 0.111 portmapper superuser
100000 4 udp 0.0 . 0.0 . 0.111 portmapper superuser
100000 3 udp 0.0 . 0.0 . 0.111 portmapper superuser
100000 2 udp 0.0 . 0.0 . 0.111 portmapper superuser
100000 4 local / var / run / rpcbind.sock portmapper superuser
100000 3 local / var / run / rpcbind.sock portmapper superuser
100024 1 udp 0.0 . 0.0 . 230.98 status 29
100024 1 tcp 0.0 . 0.0 . 144.225 status 29
100011 1 udp 0.0 . 0.0 . 3.107 rquotad superuser
100011 2 udp 0.0 . 0.0 . 3.107 rquotad superuser
100011 1 tcp 0.0 . 0.0 . 3.107 rquotad superuser
100011 2 tcp 0.0 . 0.0 . 3.107 rquotad superuser
|
2、配置NFS共享文件系统
需要共享的是PHP的服务器;共享给指定的两台httpd主机;所以可以直接指定IP地址;这里单独建立一个分区用于NFS;挂载至web配置文件中指定的DocumentRoot目录;当然也可以先挂载在配置;这里是由于之前已配置好服务;所以直接挂载文件为指定目录:
httpd配置中的路径:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[WEB85]#cat /etc/httpd24/extra/httpd-vhosts.conf # <VirtualHost *: 80 >
ServerAdmin admin@pipi.com
DocumentRoot "/usr/local/apache/www/pipi" #本地路径
ServerName www.pipi.com
ServerAlias pipi.com
ErrorLog "/usr/local/apache/logs/pipi.error_log"
CustomLog "/usr/local/apache/logs/pipi.access_log" combined
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi: //172.16.251.87:9000/var/www/pipi/$1
#上面这个路径就是PHP服务器的存放路径;也就是需要共享的NFS路径:/ var /www
<Directory "/usr/local/apache/www/pipi" >
DirectoryIndex index.html index.php
Options none
Require all granted
</Directory>
</VirtualHost> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
[PHP87] #mount
/ dev / mapper / vg0 - root on / type ext4 (rw)
proc on / proc type proc (rw)
sysfs on / sys type sysfs (rw)
devpts on / dev / pts type devpts (rw,gid = 5 ,mode = 620 )
tmpfs on / dev / shm type tmpfs (rw)
/ dev / sda1 on / boot type ext4 (rw)
/ dev / mapper / vg0 - usr on / usr type ext4 (rw)
/ dev / mapper / vg0 - var on / var type ext4 (rw)
/ dev / sda3 on / var / www type ext4 (rw,acl) #这个目录
none on / proc / sys / fs / binfmt_misc type binfmt_misc (rw)
sunrpc on / var / lib / nfs / rpc_pipefs type rpc_pipefs (rw)
nfsd on / proc / fs / nfsd type nfsd (rw)
#****注意:挂载时在fstab中写入需要acl属性**** #配置NFS主要是修改/etc/exports文件 [PHP87] #vim /etc/exports
#文件格式很简单: 文件系统 客户端 1 (文件系统导出属性 1. ..) 客户端 2 ()
/ var / www 172.16 . 251.85 (rw) 172.16 . 251.86 (rw)
#rw:读写 #async:异步 #sync:同步 #root_squash:压缩root用户;基于imapd;将root通过网络访问时转为#nfsnobody用户 #no_root_squash:不压缩root权限 #all_squash:压缩所有用户 #anonuid=[num]:指定匿名用户映射为的UID和GID #anongid=[num] 修改完成后可以查看属性 [PHP87] #exportfs -v
/ var / www 172.16 . 251.85 (rw,wdelay,root_squash,no_subtree_check)
/ var / www 172.16 . 251.86 (rw,wdelay,root_squash,no_subtree_check)
[PHP87] #其中有很多默认属性的
现在可以去httpd服务器查看该机器的共享NFS [WEB85] #showmount -e 172.16.251.87
Export list for 172.16 . 251.87 :
/ var / www 172.16 . 251.86 , 172.16 . 251.85
[WEB85] #
[WEB86] #showmount -e 172.16.251.87
Export list for 172.16 . 251.87 :
/ var / www 172.16 . 251.86 , 172.16 . 251.85
[WEB86] #
|
3、挂载配置读写权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
mount - t type device dir
- t:指定文件系统类型
[WEB85] #mount -t nfs 172.16.251.87:/var/www/ /usr/local/apache/www/
[WEB85] #mount
/ dev / mapper / vg0 - root on / type ext4 (rw)
proc on / proc type proc (rw)
sysfs on / sys type sysfs (rw)
devpts on / dev / pts type devpts (rw,gid = 5 ,mode = 620 )
tmpfs on / dev / shm type tmpfs (rw)
/ dev / sda1 on / boot type ext4 (rw)
/ dev / mapper / vg0 - usr on / usr type ext4 (rw)
/ dev / mapper / vg0 - var on / var type ext4 (rw)
none on / proc / sys / fs / binfmt_misc type binfmt_misc (rw)
sunrpc on / var / lib / nfs / rpc_pipefs type rpc_pipefs (rw)
172.16 . 251.87 : / var / www / on / usr / local / apache / www type nfs (rw,vers = 4 ,addr = 172.16 . 251.87 ,clientaddr = 172.16 . 251.85 )
#查看以挂载;第二台httpd也需要同样挂载;挂载完成后记得写入到/etc/fstab中 [WEB85] #vim /etc/fstab
增加下面这行内容 172.16 . 251.87 : / var / www / usr / local / apache / www nfs defaults,_netdev 0 0
挂载完成后;是无法写入数据的 [WEB85] #cd /usr/local/apache/www/
[WEB85] #mkdir aa
mkdir: cannot create directory `aa': Permission denied [WEB85] #
需要到php服务器配置NFS的权限;为了安全;新建立一个账户;httpd服务器也建立同样的账户 [PHP87] #useradd -u 600 web
[PHP87] #id web
uid = 600 (web) gid = 600 (web) groups = 600 (web)
[PHP87] #setfacl -R -m u:600:rwx /var/www/ -R是因为其下面有其他的目录
[PHP87] #getfacl /var/www/
getfacl: Removing leading '/' from absolute path names
# file: var/www/ # owner: root # group: root user::rwx user:web:rwx group::r - x
mask::rwx other::r - x
#httpd两台服务器建立相应的账户 [WEB85] #useradd -u 600 web
[WEB85] #su - web
[web@localhost ~]$ cd / usr / local / apache / www /
[web@localhost www]$ mkdir aaa [web@localhost www]$ ll total 52
drwxrwxr - x 2 nobody nobody 4096 Mar 26 16 : 09 aaa
#测试创建成功 |
三、配置DNS服务
1、域名系统(英文:Domain Name System,DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。目前最常用的软件为BIND;先查看是否安装;如未安装直接yum安装即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[DNS84] #rpm -qa bind*
bind - devel - 9.8 . 2 - 0.23 .rc1.el6_5. 1.x86_64
bind - libs - 9.8 . 2 - 0.23 .rc1.el6_5. 1.x86_64
bind - 9.8 . 2 - 0.23 .rc1.el6_5. 1.x86_64
bind - utils - 9.8 . 2 - 0.23 .rc1.el6_5. 1.x86_64
[DNS84] #
查看具体安装了哪些文件 [DNS84] #rpm -ql bind
/ etc / NetworkManager / dispatcher.d / 13 - named
/ etc / logrotate.d / named
/ etc / named
/ etc / named.conf
/ etc / named.iscdlv.key
/ etc / named.rfc1912.zones
/ etc / named.root.key
/ etc / portreserve / named
/ etc / rc.d / init.d / named
/ etc / rndc.conf
/ etc / rndc.key
/ etc / sysconfig / named
/ usr / lib64 / bind
/ usr / sbin / arpaname
|
2、配置域名解析至web服务器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
[DNS84] #vim /etc/named.conf
这是主配置文件;只需要注释掉其中部分内容即可;注意 / / 为注释符
/ / Provided by Red Hat bind package to configure the ISC BIND named( 8 ) DNS
/ / server as a caching only nameserver (as a localhost DNS resolver only).
/ /
/ / See / usr / share / doc / bind * / sample / for example named configuration files.
/ /
options { / / listen - on port 53 { 127.0 . 0.1 ; }; #注释
/ / listen - on - v6 port 53 { :: 1 ; }; #注释
directory "/var/named" ;
dump - file "/var/named/data/cache_dump.db" ;
statistics - file "/var/named/data/named_stats.txt" ;
memstatistics - file "/var/named/data/named_mem_stats.txt" ;
/ / allow - query { localhost; }; #注释
recursion yes;
/ / dnssec - enable yes; #注释
/ / dnssec - validation yes; #注释
/ / dnssec - lookaside auto; #注释
/ * Path to ISC DLV key * /
/ / bindkeys - file "/etc/named.iscdlv.key" ; #注释
/ / managed - keys - directory "/var/named/dynamic" ; #注释
}; logging { channel default_debug {
file "data/named.run" ;
severity dynamic;
};
}; zone "." IN {
type hint;
file "named.ca" ;
}; include "/etc/named.rfc1912.zones" ; 注意需要去这个文件内修改
include "/etc/named.root.key" ;
[DNS84] #vim /etc/named.rfc1912.zones
#添加如下几个区域文件;都是对应的域名 zone "soul.org." IN {
type master; #类型 主
file "soul.org.zone" ; #文件位置;相对主配置文件中directory的相对路径
}; zone "myadmin.cn." IN {
type master;
file "myadmin.com.zone" ;
}; zone "dark.net." IN {
type master;
file "dark.net.zone" ;
}; zone "pipi.com." IN {
type master;
file "pipi.com.zone" ;
}; 上述内容添加好;文件还是没有的;配置文件中指定的目录创建这些文件;注意权限 [DNS84] #pwd
/ var / named
[DNS84] #ll
total 44
- rw - r - - r - - 1 root root 0 Mar 26 13 : 38 a.out
- rw - r - - - - - 1 root named 227 Mar 26 15 : 04 dark.net.zone
drwxrwx - - - 2 named named 4096 Mar 26 11 : 34 data
drwxrwx - - - 2 named named 4096 Mar 26 14 : 12 dynamic
- rw - r - - - - - 1 root named 233 Mar 26 14 : 52 myadmin.cn.zone
- rw - r - - - - - 1 root named 1892 Feb 18 2008 named.ca
- rw - r - - - - - 1 root named 152 Dec 15 2009 named.empty
- rw - r - - - - - 1 root named 152 Jun 21 2007 named.localhost
- rw - r - - - - - 1 root named 168 Dec 15 2009 named.loopback
- rw - r - - - - - 1 root named 227 Mar 26 15 : 05 pipi.com.zone
drwxrwx - - - 2 named named 4096 Jan 21 01 : 40 slaves
- rw - r - - - - - 1 root named 227 Mar 26 14 : 48 soul.org.zone
[DNS84] #
[DNS84] #vim soul.org.zone
#具体内容如下 $TTL 600
@ IN SOA dns.soul.org. admin.soul.org. ( 20140326000 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns #ns记录
dns IN A 172.16 . 251.84 #ns对应的A记录
www IN A 172.16 . 251.85 #解析到85的域名
www IN A 172.16 . 251.86 #解析到86的域名
#同理;其他几个文件也是这样设置的 配置完成后需要检查下语法 [DNS84] #named-check
named - checkconf named - checkzone
为主配置文件和区域文件的检查命令 设置完成后把其他几台机器的DNS指向该DNS服务器的IP即可 记得把其他主机的DNS指向DNS服务器 [WEB85] #cat /etc/resolv.conf
# Generated by NetworkManager nameserver 172.16 . 251.84
其他几台也是一样的。 然后进行测试 [PHP87] #ping www.soul.org
PING www.soul.org ( 172.16 . 251.85 ) 56 ( 84 ) bytes of data.
64 bytes from 172.16 . 251.85 : icmp_seq = 1 ttl = 64 time = 1.00 ms
64 bytes from 172.16 . 251.85 : icmp_seq = 2 ttl = 64 time = 0.591 ms
^C - - - www.soul.org ping statistics - - -
2 packets transmitted, 2 received, 0 % packet loss, time 1326ms
rtt min / avg / max / mdev = 0.591 / 0.797 / 1.004 / 0.208 ms
[PHP87] #ping www.soul.org
PING www.soul.org ( 172.16 . 251.86 ) 56 ( 84 ) bytes of data.
64 bytes from 172.16 . 251.86 : icmp_seq = 1 ttl = 64 time = 0.712 ms
64 bytes from 172.16 . 251.86 : icmp_seq = 2 ttl = 64 time = 0.460 ms
64 bytes from 172.16 . 251.86 : icmp_seq = 3 ttl = 64 time = 0.486 ms
|
完成后记得添加一个windows的DNS地址为配置的DNS服务器IP地址。
四、测试配置一个discuz论坛和phpmyadmin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[web@ 86 myadmin]$ pwd
/ usr / local / apache / www / myadmin
[web@ 86 myadmin]$ unzip phpMyAdmin - 4.0 . 5 - all - languages. zip
[web@ 86 myadmin]$ mv phpMyAdmin - 4.0 . 5 - all - languages / * . /
[web@ 86 myadmin]$ cp config.sample.inc.php config.inc.php
[web@ 86 myadmin]$ vi config.inc.php
/ * Authentication type * /
$cfg[ 'Servers' ][$i][ 'auth_type' ] = 'cookie' ;
/ * Server parameters * /
$cfg[ 'Servers' ][$i][ 'host' ] = '172.16.251.88' ; #更改该项
$cfg[ 'Servers' ][$i][ 'connect_type' ] = 'tcp' ;
$cfg[ 'Servers' ][$i][ 'compress' ] = false;
/ * Select mysql if your server does not have mysqli * /
$cfg[ 'Servers' ][$i][ 'extension' ] = 'mysqli' ;
$cfg[ 'Servers' ][$i][ 'AllowNoPassword' ] = false;
[web@ 86 myadmin]
#完成后保存即可测试 |
测试登陆成功。
2、下面使用httpd 85 机器安装discuz论坛
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[web@ 85 pipi]$
[web@ 85 pipi]$ ls
Discuz_X3. 1_SC_UTF8 . zip
[web@ 85 pipi]$ pwd
/ usr / local / apache / www / pipi
[web@ 85 pipi]$ unzip Discuz_X3. 1_SC_UTF8 . zip
[web@ 85 pipi]$ chmod - R 777 upload /
[web@ 85 pipi]$ mv upload / * . /
到此以完成,可以直接在浏览器中访问安装了 也可以先去 86 上看下目录下的类容
[web@ 86 pipi]$ ls
Discuz_X3. 1_SC_UTF8 . zip config favicon.ico install readme template utility
admin.php connect.php forum.php member.php robots.txt uc_client api cp.php group.php misc.php search.php uc_server api.php crossdomain.xml home.php plugin.php source upload archiver data index.php portal.php static userapp.php 都是同时操作更新的。 |
数据库安装时注意指定数据库主机的IP
数据库也是同步更新的。到此配置以完成。其他几个都可以相应的放入其他域名网站。
本文转自Mr_陈 51CTO博客,原文链接:http://blog.51cto.com/chenpipi/1384661,如需转载请自行联系原作者