练习一:
配置第一台主机:服务端共享目录:
[root@localhost /]# yum install nfs-utils [root@localhost /]# systemctl start rpcbind [root@localhost /]# systemctl start nfs [root@localhost /]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 64 *:2049 *:*
[root@localhost ~]# cat /etc/exports /mysql/data 10.1.252.28/16(rw,sync) [root@localhost /]# exportfs -ar
然后更改共享目录的权限:此部分为测试,在测试部分。
配置第二台主机:
挂载共享:
[root@localhost mnt]# showmount -e 10.1.49.11 Export list for 10.1.49.11: /mysql/data 10.1.252.28/16 [root@localhost mnt]# mount -t nfs 10.1.49.11:/mysql/data /mydata
安装mysql
[root@localhost ~]yum install mysql [root@localhost ~]yum install mysql-devel mysql-server [root@localhost ~]# service mysqld start [root@localhost ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* [root@localhost ~]# mysql_secure_installation [root@localhost ~]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
更改mysql的数据库数据路径:
[root@localhost ~]# vim /etc/my.cnf
配置第三台主机:
挂载共享,同上台主机:
[root@localhost ~]# iptables -F [root@localhost ~]# setenforce 0 [root@localhost ~]# mount -t nfs 10.1.49.11:/mysql/data /mydata
测试及结论:
对共享目录设置不同权限:
(1)此处使用777权限先测试;
[root@localhost /]# chmod 777 -R /mysql
结果:能在目录下创建文件,能正常启动mysql并使用,但是提示无法修改权限:
[root@localhost testdir]# service mysqld start chown: 正在更改"/testdir/data" 的所有者: 不允许的操作 chmod: 更改"/testdir/data" 的权限: 不允许的操作 正在启动 mysqld: [确定]
两台主机不能同时启用,设置acl权限的效果也是如此。
(2)测试共享的目录不压缩root权限并且其它人有7的权限,因为挂载之后mysql是以其它人的方式访问:
[root@localhost /]# cat /etc/exports /mysql/data 10.1.252.28/16(rw,no_root_squash,sync)
结果:单台主机可以正常使用,并且目录及文件的属组属主都重新初始化为了mysql主和mysql组。两台主机不能同时启动。
(3)测试mysql都为同ID,rpm安装的mysql默认id都为27:
[root@localhost ~]# service mysqld stop Stopping mysqld: [ OK ] [root@localhost ~]# umount /mydata/ [root@localhost /]# cat /etc/exports /mysql/data 10.1.252.28/16(rw,sync) [root@localhost /]# chmod 755 /mysql/data/ -R [root@localhost /]# chown mysql:mysql /mysql -R [root@localhost /]# ll /mysql/ 总用量 4 drwxr-xr-x. 5 mysql mysql 4096 10月 18 19:19 data [root@localhost /]# exportfs -ar
重启服务:
[root@localhost mydata]# !servi service mysqld restart Stopping mysqld: [ OK ] chown: changing ownership of `/mydata': Operation not permitted chmod: changing permissions of `/mydata': Operation not permitted Starting mysqld: [ OK ]
会报错提示不允许更改权限,但是能够正常使用。说明需要root权限更改目录属主属组和和权限,因为默认目录就是755的并且属组主都为mysql。
最好的方法就是压缩root权限并更改相同ID的mysql,因为mysql在使用数据文件时会加锁,因此不能两个mysql操作同一个目录的数据。如今为了实现冗余性,会利用软件的方式,将两个mysql结合在一个数据库数据路径上,当一台主机故障,立即启用另一台。
注意:遇到的问题:yum安装的mysql是没有my.cnf的配置文件的,系统安装时会自带,若没有配置文件,可以复制默认使用的配置文件my-medium.cnf到/etc/my.cnf来使用。
练习二:
服务端:配置环境:
[root@localhost test]# yum install samba [root@localhost test]# service nmb start Starting NMB services: [ OK ] [root@localhost test]# service smb start Starting SMB services: [ OK ] [root@localhost mydata]# useradd centos [root@localhost mydata]# passwd centos [root@localhost mydata]# useradd gentoo [root@localhost mydata]# passwd gentoo
设置文件权限:
[root@localhost ftp]# setfacl -m u:gentoo:rwx pub [root@localhost ftp]# setfacl -m u:centos:rwx pub
添加用户:
[root@localhost ftp]# smbpasswd -a centos New SMB password: Retype new SMB password: Added user centos. [root@localhost ftp]# smbpasswd -a gentoo New SMB password: Retype new SMB password: Added user gentoo.
客户端
使用可写的用户centos登录:
[centos@localhost pub]$ smbclient //10.1.252.28/pub -U centos Enter centos's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6] smb: \> put issue putting file issue as \issue (1.0 kb/s) (average 1.0 kb/s) smb: \> ls . D 0 Sun Sep 11 21:00:51 2016 .. D 0 Sun Sep 11 20:50:16 2016 issue A 47 Sun Sep 11 21:00:51 2016 fstab 946 Sun Sep 11 20:57:24 2016 40317 blocks of size 524288. 37594 blocks available smb: \> rm fstab smb: \> ls . D 0 Sun Sep 11 21:01:13 2016 .. D 0 Sun Sep 11 20:50:16 2016 issue A 47 Sun Sep 11 21:00:51 2016 40317 blocks of size 524288. 37594 blocks available
使用其他用户登录:
[centos@localhost pub]$ smbclient //10.1.252.28/pub -U ge Enter ge's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6] smb: \> ls . D 0 Sun Sep 11 21:09:22 2016 .. D 0 Sun Sep 11 20:50:16 2016 fstab A 946 Sun Sep 11 21:09:16 2016 40317 blocks of size 524288. 37594 blocks available smb: \> rm fstab NT_STATUS_ACCESS_DENIED deleting remote file \fstab NT_STATUS_ACCESS_DENIED listing \fstab
确实不可写。使用用户查看共享目录列表时也不显示pub目录:
[centos@localhost pub]$ smbclient -L //10.1.252.28 -U ge Enter ge's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba Server Version 3.6.23-33.el6) ge Disk Home Directories
注意:遇到的问题二:samba服务中:直接在操作文件系统的挂载目录而不使用客户端时,用除了root的其它用户都不能写。设置了acl权限时,即使是相同id,也无法在文件系统进行写操作;但是服务端给予的权限的用户和客户端用户相同ID的情况下,更改服务端的文件的属主属组时,如下:
[root@localhost ftp]# chown root:centos pub [root@localhost ftp]# ll total 4 drwxrwxr-x+ 2 root centos 4096 Sep 11 21:26 pub
此时在客户端挂载,就可以实现写操作,证明是基于ID映射权限,而且acl的权限并不进行ID映射:
[ge@localhost ~]$ cd /mnt/pub/ [ge@localhost pub]$ ls fstab [ge@localhost pub]$ rm fstab
练习3:
共享端:配置环境:
[root@localhost ftp]mkdir -pv /data/app/web [root@localhost ftp]# mv wordpress/* -f /data/app/web/
注意:遇到的问题三:更改属主属组,并将其父目录也更改为apache,因为wordpress需要自动新建配置文件(Discuz也需要权限来写入文件,但是不需要父目录的写权限,因为其并不新建文件,只修改文件):
[root@localhost web]# chown apache:apache ./* -R [root@localhost app]# chown apache:apache web
将目录共享:
[root@localhost web]# cat /etc/exports /data/app/web 10.1.49.10/16(rw,sync) /data/app/web 10.1.49.11/16(rw,sync) [root@localhost web]# exportfs -ar [root@localhost web]# service rpcbind start [root@localhost web]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
在三台主机的任一主机上安装数据库:
然后新建数据库并且授权用户,使此用户可以通过任何主机(%通配)访问数据库的任何库和表(不建议全部授权,要授权指定的库):
MariaDB [(none)]> GRANT ALL ON *.* TO 'wordpress'@'%' IDENTIFIED BY 'magedu';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH PRIVILEGES;
测试连接数据库:可以在另一台主机上使用mysql -uwordpress -h10.1.49.11 -pmagedu。使用-h指明要登录的主机ip。
主机1:
挂载目录:
[root@localhost html]# mount -t nfs 10.1.252.28:/data/app/web /var/www/html
安装网站:在此步骤前,数据库自己先建立好,用户名密码使用授权的用户进行登录,数据库的主机填写数据库所在的主机IP,
因为wordpress速度太慢,改为Discuz,步骤基本相同;
安装完成后访问:
配置主机2:
[root@localhost Packages]# mount -t nfs 10.1.252.28:/data/app/web /var/www/html/
挂载后直接访问:
测试:
使用admin账号发帖:刷新,两个ip都可以正常显示:
注意:遇到的问题四:centos6中安装php之后,其模块配置文件在conf.d/目录下的php.conf中;
一定要注意授权的地址及库等正确;
安装时填写数据库要填写IP,在生产中为了存放数据都会单独使用数据库服务器;
配置lamp时注意与php的结合。
额外测试:
配置bind,添加区域并将同一个域名解析为两个IP,也就是两条A记录;这样能够使登录网页后使用不同的ip进行登录,也就实现了一定的负载均衡能力,但是在浏览器中一般会有缓存,在真正使用时,可以将ip分别添加至网卡的别名中。当一台服务器故障,另一台服务器上有第一台的ip,也不会影响用户的直接访问。
测试:可以使用ping命令或者dig检测:
注意:遇到的问题五:此处更改resolv.conf,使之通过252.28主机进行名称解析:
使用ping命令,通过多次执行可以看出,两个IP交替出现,能够实现一定的负载均衡能力:
原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/53748