201901建站运维笔记 43

 

5.67-NFS.md

 

问题1:

A机器上传了一张图片,结果B机器访问的时候就提示404.

 

NFS,Network File System。网络文件系统,即通过网络,对在不同主机上的文件进行共享。

NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本,更新比较慢其实4.1是从2010年就开始使用了。

NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。

NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致;

两台机器:

aming01(128) 作为服务端 aming03(130) 作为客户端

在aming01上安装:nfs-utils包

# yum install -y nfs-utils

 

在aming02上也安装:nfs-utils包;

# yum install -y nfs-utils

 

在aming01上,修改配置文件/etc/exports,写入以下内容

/home/nfstestdir 192.168.222.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

 

语句释义:

/home/nfstestdir :共享的目录

rw: 读写

ro: 只读

sync: 同步模式,内存数据实时写入磁盘

async :非同步模式

no_root_squash: 客户端挂载NFS共享目录后,root用户不受约束,权限很大

root_squash: 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

all_squash:客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

anonuid/anongid: 和上面几个选项搭配使用,定义被限定用户的uid和gid

192.168.222.0/24:为客户端的网段;

 

创建nfstestdir目录,并给予777权限;

# mkdir /home/nfstestdir

# chmod 777 /home/nfstestdir/

 

开启nfs服务,并监听端口,端口111为其默认端口;

# systemctl start nfs

 

设置开机启动:

# systemctl enable nfs

 

查看服务端共享目录:

# showmount -e 192.168.222.128

 

注意:假如没有出现共享目录,有下面可能,注意排查:

1、两者通信问题;

2、把两者的防火墙关闭

 

挂载NFS

# mount -t nfs 192.168.222.128:/home/nfstestdir /mnt/

 

创建测试文件:

# cd /mnt/

# touch 111

 

exportps命令常用选项:

-a 全部挂载或者全部卸载

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

 

在服务端上:

# exportfs -arv

 

这样就可以让服务器直接生效,不需要再次重启nfs服务

编辑配置文件,增加一个共享的目录

/home/nfstestdir 192.168.222.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

/tmp/ 192.168.222.130(rw,sync,no_root_squash) //新增一个共享目录,及其权限

 

用命令:exportfs -arv 直接生效,不用重启NFS服务

问题:

如果使用NFS4版本,可能会有客户端挂载NFS后,写入新文件的属主和数组都是nobody,即使我们指定了anonuid anongid

解决:

客户端在挂载的时候加个-o nfsvers=3

开机自动挂载

vi /etc/fstab

 

192.168.222.128:/data/wwwroot/bbs.aminglinux.cc/data /data/wwwroot/bbs.aminglinux.cc/data nfs defaults,nfsvers=3 0 0

5.69-RS宕机问题.md

 

问题2:

当RS的某一台机器宕机之后,LB依然还会把请求发送到宕机的机器上去,这样就会影响到用户的体验。

 

解决方案:

keepalived + LVS

 

安装

LB上执行: yum install keepalived

配置

LB上操作

说明:由于keepalived集成了LVS的功能,所以LB上不需要自己写脚本,之前如果做实验有执行那个脚本,需要执行如下命令

# ifdown ens33 && ifup ens33

# ipvsadm -C

 

编辑配置文件 vim /etc/keepalived/keepalived.conf //修改为如下内容:

vrrp_instance aminglinux_01 {

#备用服务器上为 BACKUP

state MASTER

#绑定vip的网卡为ens33

interface ens33

virtual_router_id 001

#优先级,优先级最高的为master,备用服务器上要低于100

priority 100

#发送VRRP包的间隔时间

advert_int 1

authentication {

auth_type PASS

auth_pass aminglinux

}

virtual_ipaddress {

192.168.222.100

}

}

virtual_server 192.168.222.100 80 {

#(每隔10秒查询realserver状态)

delay_loop 10

#(lvs 算法)

lb_algo wlc

#(DR模式)

lb_kind DR

#(同一IP的连接60秒内被分配到同一台realserver) 0 表示常连接

persistence_timeout 60

#(用TCP协议检查realserver状态)

protocol TCP

 

real_server 192.168.222.128 80 {

#(权重)

weight 100

TCP_CHECK {

#(10秒无响应超时)

connect_timeout 10

# 重新检测3次

nb_get_retry 3

# 每次检测间隔时间

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.222.130 80 {

weight 100

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

 

 

配置完后查看 ipvsadm -ln

启动keepalived服务

systemctl start keepalived

RS上还需要执行原来脚本

定义脚本 vim /usr/local/sbin/lvs_rs.sh //内容如下:

#!/bin/bash

vip=192.168.222.100

ifdown lo

ifup lo

ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up

route add -host $vip lo:0

#更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端

#参考文档https://www.imooc.com/article/79661

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

 

sh /usr/local/sbin/lvs_rs.sh

 

转载于:https://my.oschina.net/u/4067241/blog/3024204

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值