部署集群的时候,Cacti监控是必须要的。很多cacti用户在配置的时候会不生成rra导致无图。其实,只要注意权限问题就可以轻松解决这个问题。
重点就是:定时执行poller.php的crond的用户必须是cacti用户。不要手动用vi去修改crond的配置。应该在root用户下su到cacti用户执行crontab -e,修改完毕后su回root就可以了。可以顺利的生成rra,图也正常生成了。根本不用去chown那个rra的文件夹。
部署集群的时候,Cacti监控是必须要的。很多cacti用户在配置的时候会不生成rra导致无图。其实,只要注意权限问题就可以轻松解决这个问题。
重点就是:定时执行poller.php的crond的用户必须是cacti用户。不要手动用vi去修改crond的配置。应该在root用户下su到cacti用户执行crontab -e,修改完毕后su回root就可以了。可以顺利的生成rra,图也正常生成了。根本不用去chown那个rra的文件夹。
假如需要修改hostname为:host_test
即时生效的话用:hostname host_test
但是重启会失效,重启继续有效的话去改network
vi /etc/sysconfig/network
修改为:HOSTNAME=host_test,保存即可。
部署服务器集群,各种纠结。忙啊忙……
没吃早饭,看着终端里编译程序刷屏的字符,都开始犯晕了。果断拿出上回7-11买的明治巧克力,开吃,补充能量。
忙忙忙……
加油……
如果NFS服务器在内网,没有暴露在外网的话,防火墙关闭的话,配置起来没有什么问题,但是如果需要打开防火墙,比如iptables,配置完毕后客户端正常情况下是访问不了nfs服务的。
NFS服务端:SERVER
在客户端:
showmount -e SERVER
会返回类似于No route to host.的错误,就是因为防火墙的原因,阻挡了RPC通信。
解决方法:
首先,在SERVER上
vi /etc/sysconfig/nfs
把MOUNTD_PORT=892前面的注释去掉,保存
然后,在SEVER上修改iptables
添加以下几条
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 892 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 2049 -j ACCEPT
保存。
service iptables restart
service portmap restart
service nfs restart
客户端上:
service portmap restart
于是,OK啦.
####################################
#NFS_Configuration
#Author:楚霏
#Date: 2010-4-20
#Update:2010-4-26
#Env: Centos 5.4 x86_64
####################################
二、环境介绍
####################################
两台机器全是Centos 5.4 x86_64
服务端IP=10.0.0.52
客户端IP=10.0.0.166
####################################
三、配置服务端
####################################
#因为默认已经安装portmap,nfs-utils-lib和nfs-utils,所以直接配置即可
#创建要共享的目录
1 |
mkdir /nfsdata |
#nfs的主配置文件是/etc/exports
1 |
vi /etc/exports |
2 |
#----------------------------引用文字-开始---------------------------- |
3 |
#加入 |
4 |
/nfsdata 10.0.0.0/24(rw,root_squash,no_all_squash, sync ) |
5 |
#----------------------------引用文字-结束---------------------------- |
#保存设置
1 |
exportfs -r |
#配置文件每行分为段:
#第一段为共享的目录,使用绝对路径
#第二段为客户端地址及权限:
地址可以使用完整IP或网段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0当然也可以
地址可以使用主机名,DNS解析的和本地/etc/hosts解析的都行,支持通配符,例如:*.chengyongxu.com
权限有:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
####################################
四、启动、测试
####################################
#先启动所依赖的postmap
1 |
service portmap start |
2 |
service nfs start |
#本地测试
1 |
showmount -e 10.0.0.52 |
2 |
#----------------------------输出文字-开始---------------------------- |
3 |
Export list for 10.0.0.52: |
4 |
/nfsdata 10.0.0.0/24 |
5 |
#----------------------------输出文字-结束---------------------------- |
#创建挂载点
1 |
mkdir /mnt/nfsdata |
#挂载
1 |
mount -t nfs 10.0.0.52:/nfsdata /root/nfsdata |
#检查
01 |
mount |
02 |
#----------------------------输出文字-开始---------------------------- |
03 |
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) |
04 |
proc on /proc type proc (rw) |
05 |
sysfs on /sys type sysfs (rw) |
06 |
devpts on /dev/pts type devpts (rw,gid=5,mode=620) |
07 |
/dev/hda1 on /boot type ext3 (rw) |
08 |
tmpfs on /dev/shm type tmpfs (rw) |
09 |
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) |
10 |
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) |
11 |
nfsd on /proc/fs/nfsd type nfsd (rw) |
12 |
10.0.0.52:/nfsdata on /root/nfsdata type nfs (rw,addr=10.0.0.52) |
13 |
#----------------------------输出文字-结束---------------------------- |
#写文件进行测试
1 |
echo "This is a test" >> /nfsdata/ test |
#检查一下
1 |
cat /root/nfsdata/ test |
#客户端测试
#步骤相似
1 |
service portmap start |
2 |
service nfs start |
3 |
showmount -e 10.0.0.52 |
4 |
mount -t nfs 10.0.0.52:/nfsdata /root/nfsdata |
#检查
01 |
mount |
02 |
#----------------------------输出文字-开始---------------------------- |
03 |
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) |
04 |
proc on /proc type proc (rw) |
05 |
sysfs on /sys type sysfs (rw) |
06 |
devpts on /dev/pts type devpts (rw,gid=5,mode=620) |
07 |
/dev/hda1 on /boot type ext3 (rw) |
08 |
tmpfs on /dev/shm type tmpfs (rw) |
09 |
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) |
10 |
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) |
11 |
nfsd on /proc/fs/nfsd type nfsd (rw) |
12 |
10.0.0.52:/nfsdata on /root/nfsdata type nfs (rw,addr=10.0.0.52) |
13 |
#----------------------------输出文字-结束---------------------------- |
#读写一下检查检查
1 |
cat /root/nfsdata/ test |
2 |
vi /root/nfsdata/ test |
#注意:
#如果需要开机挂载的话别忘了在/etc/fstab中加入
1 |
#----------------------------引用文字-开始---------------------------- |
2 |
/root/nfsdata 10.0.0.52:/nfsdata |
3 |
#----------------------------引用文字-结束---------------------------- |
####################################
五、常见错误
####################################
错误一:Cannot register service: RPC
01 |
service nfs restart |
02 |
#----------------------------输出文字-开始---------------------------- |
03 |
Shutting down NFS mountd: [ OK ] |
04 |
Shutting down NFS daemon: [ OK ] |
05 |
Shutting down NFS quotas: [ OK ] |
06 |
Shutting down NFS services: [ OK ] |
07 |
Starting NFS services: [ OK ] |
08 |
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused |
09 |
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp). |
10 |
[FAILED] |
11 |
#----------------------------输出文字-结束---------------------------- |
12 |
13 |
#解决方法: |
14 |
service portmap start |
15 |
#先启动portmap才行 |
01 |
错误二:Address already in use |
02 |
tail -f /var/log/message |
03 |
#----------------------------输出文字-开始---------------------------- |
04 |
Apr 10 13:43:27 bogon nfsd[15918]: nfssvc: Setting version failed: errno 16 (Device or resource busy) |
05 |
Apr 10 13:43:27 bogon nfsd[15918]: nfssvc: unable to bind UPD socket: errno 98 (Address already in use) |
06 |
Apr 10 13:45:27 bogon nfsd[15978]: nfssvc: Setting version failed: errno 16 (Device or resource busy) |
07 |
Apr 10 13:45:27 bogon nfsd[15978]: nfssvc: unable to bind UPD socket: errno 98 (Address already in use) |
08 |
Apr 10 13:49:05 bogon nfsd[16080]: nfssvc: Setting version failed: errno 16 (Device or resource busy) |
09 |
#----------------------------输出文字-结束---------------------------- |
10 |
11 |
#解决方法: |
12 |
ps aux | grep nfs |
13 |
#然后用kill干掉这些进程 |
错误三:mount: 10.0.0.52:/nfsdata failed, reason given by server: Permission denied
1 |
#解决方法: |
2 |
a.把该客户端的ip加入服务端的/etc/exports |
3 |
b.服务端的和客户端规则要统一,要么都使用主机名(注意每台机器的hosts文件),要么都使用IP |
错误四:客户端挂载超时
01 |
tail -f /var/log/message |
02 |
#----------------------------输出文字-开始---------------------------- |
03 |
Apr 10 14:42:35 localhost kernel: portmap: server localhost not responding, timed out |
04 |
Apr 10 14:42:35 localhost kernel: RPC: failed to contact portmap (errno -5). |
05 |
Apr 10 14:42:46 localhost kernel: RPC: failed to contact portmap (errno -512). |
06 |
Apr 10 14:42:46 localhost kernel: lockd_up: makesock failed, error=-512 |
07 |
Apr 10 14:42:46 localhost kernel: RPC: failed to contact portmap (errno -512). |
08 |
#----------------------------输出文字-结束---------------------------- |
09 |
10 |
#解决方法: |
11 |
service portmap restart |
12 |
service nfs restart |
错误五:Error: RPC MTAB does not exist.
01 |
service nfs start |
02 |
#----------------------------引用文字-开始---------------------------- |
03 |
Starting NFS services: [ OK ] |
04 |
Starting NFS quotas: [ OK ] |
05 |
Starting NFS daemon: [ OK ] |
06 |
Starting NFS mountd: [ OK ] |
07 |
Starting RPC idmapd: Error: RPC MTAB does not exist. |
08 |
#----------------------------引用文字-结束---------------------------- |
09 |
10 |
#解决方法: |
11 |
#手动执行 |
12 |
mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs/ |
13 |
#需要时加入开机启动时,加入下面两行到/etc/fstab |
14 |
#----------------------------引用文字-开始---------------------------- |
15 |
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0 |
16 |
nfsd /proc/fs/nfsd nfsd defaults 0 0 |
17 |
#----------------------------引用文字-结束---------------------------- |
####################################
昨天的关于nfs的日志中缺少一种情况,就是服务端和客户端都重启的情况下,如果服务端比客户端晚重启完成,会造成客户端第一次就mount失败,于是就停止mount NFS的目录了,于是需要解决这个问题,目前有3种方法可以考虑。
1.最简单的,在客户端上crond每五分钟自动执行一次mount -a
2.用cacti的监控,如果监控机发现客户端的nfs目录异常,执行脚本通知客户端执行mount -a
3.autofs,访问时自动挂载,只要服务端启动完成,就能挂载上
其实就是定期执行和触发式的区别。暂未决定使用哪种。
服务器部署中有个问题一直没有去解决,写文档的时候涉及到了,必须去解决一下。
NFS服务启动完成,NFS客户端成功挂载后。进行重启实验。
1.只重启客户端,客户端启动后会自动加载fstab中的nfs挂载项,成功挂载。
2.只重启服务端,客户端在服务端重启后操作之前挂载上的nfs目录,会卡死。而且在服务端重启完毕后仍然无法正常挂载nfs目录,且umount也会失败。
解决方法:1.fstab中nfs挂载选项加上hard,intr
类似这样:
test1:/data/nfs_test /data/nfs_test nfs hard,intr 0 0
hard指连接失败后一直尝试重新挂载,intr指的是中断无法完成的访问请求。
修改后保存客户端fstab。
再次重启客户端或者服务端都可以正常挂载.
2.使用autofs,访问的时候才去挂载,有超时和重试机制,没有具体实验。
另外注意服务端的防火墙需要关闭或者开放相应的端口
听着听着感觉办公室里就剩下我一个人了。囧rz…….