Linux云盘算 |【第三阶段】PROJECT1-DAY3

种地  金牌会员 | 2024-9-19 12:41:26 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 690|帖子 690|积分 2070

重要内容:

Keepalived高可用、摆设Ceph分布式存储

一、网站架构进阶项目案例

案例1:Keepalived高可用

   一连 PROJECT1-DAY2 案例,摆设两台代理服务器,实现如下效果:
  

  • 1)利用keepalived实现两台代理服务器的高可用(192.168.2.5/192.168.2.6)
  • 2)配置VIP为192.168.2.80
  • 3)修改对应的域名剖析记录
实行拓扑图:

主机配置表:

步骤1:配置第二台代理服务器proxy2(解决单点故障)
1)摆设HAProxy(负载均衡)
  1. [root@proxy2 ~]# yum -y install haproxy
  2. [root@proxy2 ~]# vim /etc/haproxy/haproxy.cfg
  3. listen wordpress *:80      //监听80端口
  4.   balance roundrobin      //轮询算法
  5.   server web1 192.168.2.11:80 check inter 2000 rise 2 fall 3
  6.   server web2 192.168.2.12:80 check inter 2000 rise 2 fall 3
  7.   server web3 192.168.2.13:80 check inter 2000 rise 2 fall 3
  8. [root@proxy2 ~]# systemctl start haproxy
  9. [root@proxy2 ~]# systemctl enable haproxy
  10. [root@proxy2 ~]# ss -nlptu | grep :80
  11. tcp    LISTEN     0      128       *:80                    *:*                   users:(("haproxy",pid=684,fd=7))
  12. [root@proxy2 ~]# firewall-cmd --set-default-zone=trusted
  13. [root@proxy2 ~]# setenforce 0
  14. [root@proxy2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
复制代码
步骤2:为两台代理服务器配置keepalived(高可用)—> VIP:192.168.2.80
1)配置第一台代理服务器proxy(192.168.2.5)
  1. [root@proxy ~]# yum install -y keepalived
  2. [root@proxy ~]# vim /etc/keepalived/keepalived.conf
  3. global_defs {
  4.   router_id  proxy1    //设置路由ID号
  5.   vrrp_iptables         //设置防火墙规则(手动添加该行)
  6. }
  7. vrrp_instance VI_1 {
  8.   state MASTER        //主服务器为MASTER(备服务器需要修改为BACKUP)
  9.   interface eth1        //网卡名称
  10.   virtual_router_id 51               
  11.   priority 100          //服务器优先级,优先级高优先获取VIP
  12.   advert_int 1
  13.   authentication {
  14.     auth_type pass
  15.     auth_pass 1111     //主备服务器密码必须一致
  16.   }
  17.   virtual_ipaddress {     //VIP地址
  18.   192.168.4.80
  19. }   
  20. }
  21. [root@proxy ~]# systemctl start keepalived
  22. [root@proxy ~]# systemctl enable keepalived
复制代码
2)配置第二台代理服务器proxy2(192.168.2.6)
  1. [root@proxy2 ~]# yum install -y keepalived
  2. [root@proxy2 ~]# vim /etc/keepalived/keepalived.conf
  3. global_defs {
  4.   router_id  proxy2       //设置路由ID号
  5.   vrrp_iptables              //设置防火墙规则(手动添加该行)
  6. }
  7. vrrp_instance VI_1 {
  8.   state BACKUP           //主服务器为MASTER(备服务器需要修改为BACKUP)
  9.   interface eth1           //网卡名称
  10.   virtual_router_id 51               
  11.   priority 95              //服务器优先级,优先级高优先获取VIP
  12.   advert_int 1
  13.   authentication {
  14.     auth_type pass
  15.     auth_pass 1111      //主备服务器密码必须一致
  16.   }
  17.   virtual_ipaddress {     //VIP地址
  18.   192.168.2.80
  19. }   
  20. }
  21. [root@proxy2 ~]# systemctl start keepalived
  22. [root@proxy2 ~]# systemctl enable keepalived
复制代码
验证高可用:
1)在优先级高的MASTER主机检察是否有VIP地址
  1. [root@proxy ~]# ip add show eth1 | grep 192.168.2.80    //查看MASTER的VIP
  2. inet 192.168.2.80/32 scope global eth1
复制代码
使用欣赏器访问http://192.168.2.80,确认是否能检察WEB页面

2)制止优先级高的MASTER主机上的Keepalived服务,在优先级低的BACKUP主机上检察是否有VIP地址;并使用欣赏器访问http://192.168.2.80,确认WEB页面
  1. [root@proxy2 ~]# ip add show eth1 | grep 192.168.2.80
  2.     inet 192.168.2.80/32 scope global eth1
复制代码
3)在优先级高的MASTER主机上再启动keepalived服务,检察VIP地址是否回到主服务器上;
步骤3:修改DNS服务器
1)修改网站域名对应的剖析记录,剖析VIP地址
  1. [root@dns ~]# vim /var/named/lab.com.zone
  2. $TTL 1D
  3. @       IN SOA  @ rname.invalid. (
  4.                                         0       ; serial
  5.                                         1D      ; refresh
  6.                                         1H      ; retry
  7.                                         1W      ; expire
  8.                                         3H )    ; minimum
  9. @       NS      dns.lab.com.
  10. dns     A       192.168.2.10
  11. www     A       192.168.2.10
  12. www     A       192.168.2.80    //添加解析VIP地址记录
复制代码
2)重启DNS服务
  1. [root@dns ~]# systemctl restart named
复制代码
验证:
   修改/etc/resolv.conf域名剖析配置文件,指定DNS域名剖析服务器
  1. [root@proxy ~]# vim /etc/resolv.conf
  2. nameserver 192.168.2.10
  3. [root@proxy ~]# nslookup www.lab.com
  4. Server:               192.168.2.10
  5. Address:   192.168.2.10#53
  6.  
  7. Name:      www.lab.com
  8. Address: 192.168.2.10
  9. Name:      www.lab.com
  10. Address: 192.168.2.80
  11. [root@proxy ~]# ping www.lab.com
  12. PING www.lab.com (192.168.2.80) 56(84) bytes of data.
  13. 64 bytes from proxy (192.168.2.80): icmp_seq=1 ttl=255 time=0.014 ms
  14. 64 bytes from proxy (192.168.2.80): icmp_seq=2 ttl=255 time=0.023 ms
复制代码


常见问题:nfs解决 “clnt_create: RPC: Program not registered”
运行showmount -e时会出现clnt_create: RPC: Program not registered的问题



案例2:摆设Ceph分布式存储

摆设Ceph分布式存储,实现如下效果:


  • 1)使用三台服务器摆设Ceph分布式存储
  • 2)实现Ceph文件系统共享
  • 3)将网站数据从NFS迁移到Ceph存储
实行拓扑图

主机配置表

步骤1:准备实行情况
1)为虚拟机添加磁盘(node1、node2、node3操纵)
KVM虚拟机:为3台ceph节点主机各添加2块20G磁盘

  1. [root@node1 ~]# lsblk     //查看新增的2块磁盘(以node1为例)
  2. NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. vda    253:0    0  30G  0 disk
  4. └─vda1 253:1    0  30G  0 part /
  5. vdb    253:16   0  20G  0 disk
  6. vdc    253:32   0  20G  0 disk
  7. [root@node2 ~]# lsblk
  8. [root@node3 ~]# lsblk
复制代码
  增补:VMware虚拟机选【设置】--【添加】--【CD|DVD驱动器】--【完成】,点击新建的光盘[CD|DVD],勾选使用ISO映像文件--[欣赏],找到真机的ceph10.iso加载即可;添加磁盘,全部3台ceph主机都添加2块20G磁盘,启动全部虚拟机后,检察磁盘情况;
  2)为3台ceph服务器添加光驱设备(node1、node2、node3)


  • 方法1:添加光驱设备,并加载ceph10.iso
  1. [root@node1 ~]# blkid /dev/cdrom
  2. /dev/cdrom: UUID="2019-01-24-18-15-06-00" LABEL="CDROM" TYPE="iso9660"
  3. [root@node1 ~]# mount /dev/cdrom /mnt/
  4. [root@node1 ~]# ls /mnt/
  5. EULA  GPL  MON  OSD  README  RPM-GPG-KEY-redhat-release  Tools  TRANS.TBL
  6. [root@node1 ~]# echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab
  7. [root@node1 ~]# mount -a
  8. 或者:
  9. [root@node1 ~]# echo "mount /dev/cdrom /mnt" /etc/rc.local
复制代码


  • 方法2:第二阶段素材ceph10.iso挂载/var/ftp/ceph目录,为全部虚拟机提供YUM源
  1. [root@localhost 桌面]# mkdir /var/ftp/ceph
  2. [root@localhost 桌面]# mount -t iso9660 /linux-soft/2/ceph10.iso /var/ftp/ceph/
  3. [root@localhost 桌面]# df -h
  4. 文件系统        容量  已用  可用 已用% 挂载点
  5. /dev/loop2      284M  284M     0  100% /var/ftp/ceph
复制代码
3)全部主机设置防火墙和SELinux(全部主机操纵)
  1. [root@node1 ~]# firewall-cmd --set-default-zone=trusted
  2. [root@node1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
  3. [root@node1 ~]# setenforce 0
  4. [root@node2 ~]# firewall-cmd --set-default-zone=trusted
  5. [root@node2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
  6. [root@node2 ~]# setenforce 0
  7. [root@node3 ~]# firewall-cmd --set-default-zone=trusted
  8. [root@node3 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
  9. [root@node3 ~]# setenforce 0
复制代码
4)在node1配置SSH密钥,让node1可用无密码连接node1,node2,node3
   配置SSH无密码连接为了同时给别的全部主机远程拷贝文件、安装软件包、启动服务等;
  1. [root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
  2. [root@node1 ~]# for i in {41..43}
  3. > do
  4. > ssh-copy-id 192.168.2.$i   //将密钥传递给192.168.2.41、2.42、2.43
  5. > done
复制代码
解释说明:
   # [-f 密钥文件的名称] (创建密钥到哪个文件)
  # [ -N '' ] 设置密钥的密码为空(不要给密钥配置密码)
  5)修改/etc/hosts域名剖析记录(不要删除原文件的数据),同步给全部ceph节点
  1. [root@node1 ~]# vim /etc/hosts
  2. 192.168.2.41  node1
  3. 192.168.2.42  node2
  4. 192.168.2.43  node3
  5. [root@node1 ~]# for i in {41..43}
  6. > do
  7. > scp /etc/hosts 192.168.2.$i:/etc
  8. > done
复制代码
6)配置全部节点的ceph.iso的YUM源,并同步到全部ceph节点
  1. [root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
  2. [mon]
  3. name=mon
  4. baseurl=file:///mnt/MON
  5. gpgcheck=0
  6.  
  7. [osd]
  8. name=osd
  9. baseurl=file:///mnt/OSD
  10. gpgcheck=0
  11.  
  12. [tools]
  13. name=tools
  14. baseurl=file:///mnt/Tools
  15. gpgcheck=0
  16. [root@node1 ~]# yum repolist
  17. 源标识            源名称               状态
  18. local_repo    CentOS-7 - Base         9,911
  19. mon               mon                  41
  20. osd               osd                  28
  21. tools            tools                 33
  22. repolist: 10,013
  23. [root@node1 ~]# for i in {42,43}     //远程访问并进行mount永久挂载
  24. > do
  25. > ssh 192.168.2.$i "echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab ; mount -a"
  26. > done
  27. [root@node1 ~]# for i in {42,43}
  28. > do
  29. > scp /etc/yum.repos.d/ceph.repo 192.168.2.$i:/etc/yum.repos.d/
  30. > done
复制代码
7)配置NTP服务器同步时间


  • node1为NTP服务器
  1. [root@node1 ~]# vim /etc/chrony.conf
  2. allow 192.168.2.0/24      //修改26行
  3. local stratum 10          //修改29行(去注释即可)
  4. [root@node1 ~]# systemctl restart chronyd
复制代码


  • node2和node3做NTP客户端
  1. [root@node2 ~]# vim /etc/chrony.conf
  2. server 192.168.2.41 iburst   
  3. [root@node2 ~]# systemctl restart chronyd
  4. [root@node2 ~]# chronyc sources -v      //查看时间同步结果,【^*】
  5. 210 Number of sources = 1
  6.  
  7.   .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
  8.  / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
  9. | /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
  10. ||                                                 .- xxxx [ yyyy ] +/- zzzz
  11. ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
  12. ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
  13. ||                                \     |          |  zzzz = estimated error.
  14. ||                                 |    |           \
  15. MS Name/IP address         Stratum Poll Reach LastRx Last sample              
  16. ===============================================================================
  17. ^* node1                        10   6    37    40     -5ns[ -470us] +/-  168us
  18.  
  19. [root@node3 ~]# vim /etc/chrony.conf
  20. server 192.168.2.41 iburst         
  21. [root@node3 ~]# systemctl restart chronyd
  22. [root@node3 ~]# chronyc sources -v     //查看时间同步结果,【^*】
复制代码
步骤2:摆设ceph集群,分布式存储系统(OSD、MON)
1)给node1主机安装ceph-deploy管理工具,创建并切换工作目录
  1. [root@node1 ~]# yum -y install ceph-deploy
  2. [root@node1 ~]# mkdir ceph-cluster ; cd ceph-cluster
  3. [root@node1 ceph-cluster]#
复制代码
2)给全部ceph节点安装ceph相关软件包
  1. [root@node1 ceph-cluster]# for i in node{1..3}
  2. > do
  3. > ssh $i "yum -y install ceph-mon ceph-osd ceph-mds"
  4. > done
复制代码
3)初始化MON服务
  1. [root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3  //生成ceph配置文件
  2. [root@node1 ceph-cluster]# ceph-deploy mon create-initial     //拷贝ceph配置文件给node1、node2、node3,启动所有节点的mon服务
  3. [root@node1 ceph-cluster]# ls /etc/ceph/
  4. ceph.client.admin.keyring  ceph.conf  rbdmap  tmp8O0CCk
  5. [root@node2 ~]# ls /etc/ceph/
  6. ceph.client.admin.keyring  ceph.conf  rbdmap  tmpA_W5Rj
  7. [root@node3 ~]# ls /etc/ceph/
  8. ceph.client.admin.keyring  ceph.conf  rbdmap  tmpnWxN6H
复制代码
检察ceph状态(此时失败是正常的)
  1. [root@node1 ceph-cluster]# ceph -s
  2.     cluster b752cdca-c028-4b0c-ae1b-c8bf7dac0b48
  3.      health HEALTH_ERR
  4.             no osds
  5.      monmap e1: 3 mons at {node1=192.168.2.41:6789/0,node2=192.168.2.42:6789/0,node3=192.168.2.43:6789/0}
  6.             election epoch 6, quorum 0,1,2 node1,node2,node3
  7.      osdmap e1: 0 osds: 0 up, 0 in
  8.             flags sortbitwise
  9.       pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
  10.             0 kB used, 0 kB / 0 kB avail
  11.                   64 creating
  12. [root@node1 ceph-cluster]# systemctl status ceph-mon@node1
  13. [root@node2 ceph-cluster]# systemctl status ceph-mon@node2
  14. [root@node3 ceph-cluster]# systemctl status ceph-mon@node3
复制代码
4)使用ceph-deploy工具,初始化数据磁盘
  1. [root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc \
  2. node2:vdb node2:vdc node3:vdb node3:vdc
复制代码
5)初始化OSD集群,创建OSD存储空间
  1. [root@node1 ceph-cluster]# ceph-deploy osd create node1:vdb node1:vdc \
  2. node2:vdb node2:vdc node3:vdb node3:vdc
复制代码
检察ceph状态
  1. [root@node1 ceph-cluster]# ceph osd tree
  2. ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
  3. -1 0.08752 root default                                    
  4. -2 0.02917     host node1                                  
  5.  0 0.01459         osd.0       up  1.00000          1.00000
  6.  1 0.01459         osd.1       up  1.00000          1.00000
  7. -3 0.02917     host node2                                  
  8.  2 0.01459         osd.2       up  1.00000          1.00000
  9.  3 0.01459         osd.3       up  1.00000          1.00000
  10. -4 0.02917     host node3                                  
  11.  4 0.01459         osd.4       up  1.00000          1.00000
  12.  5 0.01459         osd.5     down        0          1.00000
  13. [root@node1 ceph-cluster]# ceph -s
  14.     cluster b752cdca-c028-4b0c-ae1b-c8bf7dac0b48
  15.      health HEALTH_OK
  16.      monmap e1: 3 mons at {node1=192.168.2.41:6789/0,node2=192.168.2.42:6789/0,node3=192.168.2.43:6789/0}
  17.             election epoch 6, quorum 0,1,2 node1,node2,node3
  18.      osdmap e44: 6 osds: 6 up, 6 in
  19.             flags sortbitwise
  20.       pgmap v75: 64 pgs, 1 pools, 0 bytes data, 0 objects
  21.             203 MB used, 91890 MB / 92093 MB avail
  22.                   64 active+clean
  23.                   
  24. [root@node1 ceph-cluster]# df -h
  25. 文件系统        容量  已用  可用 已用% 挂载点
  26. /dev/vdb1      15G   35M   15G    1% /var/lib/ceph/osd/ceph-0
  27. /dev/vdc1      15G   34M   15G    1% /var/lib/ceph/osd/ceph-1
复制代码
步骤3:摆设ceph文件系统
1)启动mds服务(可在node1、node2、node3启动,也可在多台主机启动mds)
  1. [root@node1 ceph-cluster]# ceph-deploy mds create node3
复制代码
2)创建存储池(文件系统由inode和block组成)
  1. [root@node1 ceph-cluster]# ceph osd pool create cephfs_data 64
  2. pool 'cephfs_data' created
  3. [root@node1 ceph-cluster]# ceph osd pool create cephfs_metadata 64
  4. pool 'cephfs_metadata' created
  5. [root@node1 ceph-cluster]# ceph osd lspools     //查看共享池
  6. 0 rbd,1 cephfs_data,2 cephfs_metadata,
复制代码
3)创建文件系统
  1. [root@node1 ceph-cluster]# ceph fs new myfs1 cephfs_metadata cephfs_data
  2. new fs with metadata pool 2 and data pool 1
  3. [root@node1 ceph-cluster]# ceph fs ls    //查看文件系统
  4. name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
复制代码
步骤4:迁移网站数据到ceph集群
1)卸载web1、web2、web3的NFS共享
   停息服务防止有人实时读写文件
  1. [root@web1 ~]# systemctl stop nginx.service      //停止Nginx服务
  2. [root@web2 ~]# systemctl stop nginx.service
  3. [root@web3 ~]# systemctl stop nginx.service
  4. [root@web1 ~]# umount /usr/local/nginx/html      //卸载挂载
  5. [root@web2 ~]# umount /usr/local/nginx/html
  6. [root@web3 ~]# umount /usr/local/nginx/html
  7. [root@web1 ~]# vim /etc/fstab     //注释/etc/fstab开机挂载
  8. #192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
  9. [root@web2 ~]# vim /etc/fstab
  10. #192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
  11. [root@web3 ~]# vim /etc/fstab
  12. #192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
复制代码
2)web服务器永久挂载Ceph文件系统(web1、web2、web3都必要操纵)
① 在任意ceph节点,如node1检察ceph账户与密码
  1. [root@node1 ceph-cluster]# cat /etc/ceph/ceph.client.admin.keyring
  2. [client.admin]
  3.          key = AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
复制代码
② 安装ceph-common的客户端软件
  1. [root@web1 ~]# yum -y install ceph-common
  2. [root@web2 ~]# yum -y install ceph-common
  3. [root@web3 ~]# yum -y install ceph-common
复制代码
③ 挂载Ceph文件系统
  1. [root@web1 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
  2. [root@web1 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
  3. [root@web1 ~]# chmod +x /etc/rc.local
  4.  
  5. [root@web2 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
  6. [root@web2 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
  7. [root@web2 ~]# chmod +x /etc/rc.local
  8.  
  9. [root@web3 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
  10. [root@web3 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
  11. [root@web3 ~]# chmod +x /etc/rc.local
复制代码
解释说明:
   # mount的【-t】选项(type)指定文件系统类型,文件系统类型为ceph;
  # mount的【-o】选项(option)指定mount挂载命令的选项,选项包括name账户名和secret密码;
  #【/】代表Ceph的“根”(六个硬盘的全部空间)
  # 192.168.2.41为MON节点的IP(不是MDS节点),必要找到MON获取MAP信息,6789是MON服务的端标语(可不写,默认6789)
  # admin是用户名,secret后面是密钥(密钥在/etc/ceph/ceph.client.admin.keyring)
  验证Ceph文件系统:
  1. [root@web1 ~]# df -h /usr/local/nginx/html
  2. 文件系统             容量  已用  可用 已用% 挂载点
  3. 192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html
  4. [root@web2 ~]# df -h /usr/local/nginx/html
  5. 文件系统             容量  已用  可用 已用% 挂载点
  6. 192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html
  7. [root@web3 ~]# df -h /usr/local/nginx/html/
  8. 文件系统             容量  已用  可用 已用% 挂载点
  9. 192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html
复制代码

增补:另一种解决方案,通过fstab实现永久挂载
提示:如果希望使用fstab实现永久挂载,客户端必要额外安装libcephfs1软件包。
  1. [root@web1 ~]# yum -y install libcephfs1
  2. [root@web1 ~]# vim /etc/fstab
  3. … …
  4. 192.168.2.41:6789:/ /usr/local/nginx/html/    ceph   defaults,_netdev,name=admin,secret=AQCVcu9cWXkgKhAAWSa7qCFnFVbNCTB2DwGIOA== 0 0
复制代码
增补:对于高可用的问题,可以在mount时同时写入多个IP


  • 临时命令:
  1. [root@web1 ~]# mount -t ceph  \
  2. 192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html  \
  3. -o name=admin,secret=密钥
复制代码


  • 永久修改:
  1. [root@web1 ~]# vim /etc/fstab
  2. 192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html/ \
  3. ceph defaults,_netdev,name=admin,secret=密钥 0 0
复制代码

3)迁移NFS服务器中的数据到Ceph存储
   登岸NFS服务器备份网站数据,将备份的数据拷贝给web1或web2或web3(共享存储池),tar备份数据时注意使用-p选项保留文件权限;
  1. [root@nfs ~]# cd /web_share/
  2. [root@nfs web_share]# tar -czpf /root/html.tar.gz ./*
  3. [root@nfs web_share]# scp /root/html.tar.gz 192.168.2.11:/usr/local/nginx/html/
  4. [root@web1 ~]# ls /usr/local/nginx/html
  5. html.tar.gz
  6. [root@web1 ~]# cd /usr/local/nginx/html/
  7. [root@web1 html]# tar -xf html.tar.gz
  8. [root@web1 ~]# ls /usr/local/nginx/html
  9. 50x.html     license.txt         wp-comments-post.php  wp-includes        wp-settings.php
  10. a.html       readme.html         wp-config.php         wp-links-opml.php  wp-signup.php
  11. html.tar.gz  wp-activate.php     wp-config-sample.php  wp-load.php        wp-trackback.php
  12. index.html   wp-admin            wp-content            wp-login.php       xmlrpc.php
  13. index.php    wp-blog-header.php  wp-cron.php          wp-mail.php
复制代码
4)恢复web服务的Nginx服务
  1. [root@web1 ~]# systemctl start nginx.service
  2. [root@web2 ~]# systemctl start nginx.service
  3. [root@web3 ~]# systemctl start nginx.service
复制代码



扩展知识(常见面试题1)

   
  1)形貌raid 0、1、5的特点和优点?
  答:Raid0条带卷,可以高效读写,硬盘空间利用率100%;raid1是复制卷可以实现数据的高可靠读写,硬盘空间利率50%;raid5兼得以上两种优点,硬盘空间利用率N-1,仅可用破坏一块硬盘。
  
  2)将目录/opt/bjca3打包备份扫除/opt/bjca3/logs目录,通报到远程主机192.168.1.8的/backup目录下?
  答:使用--exclude选项在打包时可用扫除特定的目录,但是要注意,使用tar 的--exclude 扫除打包的时间,不能加“/”,否则还是会把logs目录以及其下的文件打包进去。
  精确写法:tar -czvf bjca3.tar.gz --exclude=/opt/bjca3/logs /opt/bjca3
  
  3) 如何远程检察Linux服务192.168.1.7运行了多少时间?
  答:ssh root@192.168.1.7 uptime
  
  4)虚拟机常用有几种网络模式?请简述其工作原理或你个人的理解?
  答:有桥接模式、隔离模式、NAT模式、路由模式,
  桥接模式:Guest与Host连接到同一个互换机上;通过桥接物理网卡,相称于直连到Host所在网络。(备注:Guest是虚拟机,Host是真实主机)
  隔离模式:允许Guest访问同一虚拟互换机上的其他Guest;但是不能访问Host所在的外部网络。
  NAT模式(默认):将Guest虚拟机的默认网关指向Host物理机的虚拟网桥接口的IP地址;Guest共享真机的网络连接,以地址转换的方式访问外网。
  路由模式:由Host物理机充当路由器,开启转发;必要额外设置外网与Guest虚拟机之间互访的路由条目,Guest以路由转发的方式访问外网(必要在真机配置iptables规则)。
  
  5)在11月份内,天天的早上6点到12点中,每隔2小时实行一次 /usr/bin/httpd.sh,怎么实现?
  答:0 6-12/2 * 11 * /usr/bin/httpd.sh
  
  6)如何检察当前系统是否有监听6666端口?
  答:netstat -untlp | grep 6666大概ss -nutlp | grep 6666
  
  7) 如何显示CPU占用率最高的进程?
  答:top,输入大写的P
  
  8)用什么命令可以检察上一次服务器启动时间、上一次谁登岸过服务器?
  答:last(历史登岸记录),uptime(系统累计运行的时间),who -b(前次启动系统的时间)
  
扩展知识(常见面试题2)

   
  1) 什么是灰度发布:
  答:灰度发布(又名金丝雀发布)是指在黑与白之间,可以或许平滑过渡的一种发布方式。让一部分用户继承用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把全部用户都迁移到B上面来。灰度发布可以包管团体系统的稳定,在初始灰度的时间就可以发现、调整问题,以包管其影响度。灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。
  
  2)DNS服务器有哪些种,其使用的端口为多少?
  答:有 根DNS、一级DNS、二级DNS、三级DNS、缓存DNS、主DNS服务器、从DNS服务器
  端口:53
  
  3)从日记/opt/bjca3/logs/ca_access.log中截取14点到16点的日记,将截取的日记导入到/tmp/ca_access.txt中,日记格式如下:
  答:awk '$4>="14:00:00"&&$4
  
  4)监控检查,使用ping命令编写脚本来查询一组IP地址同时检测他们是否处于活跃状态。要求(range:192.168.1.200-192.168.1.220,一个IP发送4个ping包,ping的过程不能输出信息到终端)?
  答:
  1. #!/bin/bash
  2. for i in {200..220}
  3. do
  4. ping -c 4  -i 0.2  -W 1  192.168.1.$i &>/dev/null
  5. if  [  $? -ne 0 ];then
  6.     echo  "192.168.1.$i is down" >> log.txt
  7. fi
  8. done
复制代码

  5)假设nginx的访问日记格式如下,统计访问页面前10位的IP数?
  答:awk '{IP[$1]++} END{for(i in IP){print i,IP}}' access.log | sort -n | tail -10
  
  6) 请列举出10个以上的你所知晓的SQL语句?
  参考答案:insert select delete update create show drop grant revoke load data   create view
  
  7)如何切换到某个数据库,并在上面工作?
  答:use 库名;
  
  8)列出数据库内的全部表?
  答:show tables;
  
  9)如何删除表、删除数据库?
  答:drop table 表名;drop database 库名;
  
  10)如何列出表"xrt"内name域值为"tecmint",web_address域值为"tecmint.com"的全部数据?
  答:select * from xrt where name="tecmint" and web_address="tecmint.com";
  
扩展知识(常见面试题3)

   1) 如何使用awk检察TCP连接状态?
  答:ss -ant |awk '{print $1}'   或 netstat -ant |awk '{print $6}'
  
  2) 有个txt文件内容如下:
  http://a.domain.com/l.html
  http://b.domain.com/l.html
  http://c.domain.com/l.html
  http://a.domain.com/2.html
  http://b.domain.com/2.html
  http://a.domain.com/3.html
  要求:编写脚本获取主机名、域名,并统计每个域名出现的次数,并排序。
  答:
  1. #!/bin/bash
  2. awk -F"[/.]" '{print $3}' txt    #单独获取主机名
  3. awk -F"[/]" '{print $3}'  txt    #获取完整域名
  4. awk -F"[/]" '{IP[$3]++} END{for(i in IP){print IP[i],i}}' txt | sort -n
复制代码

  3) 至少说出一种linux下实现高可用的方案名称?
  答:keepalived,HeartBeat
  
  4)简述下负载均衡与高可用的概念?
  答:
  LB(Load_balancing): 多台服务器平均响应客户端的多次连接哀求。
  HA(High Availability): 主备模式,主服务器宕机后,备用服务器才接替工作。
  
  5)列举几种你知道的LVS调理算法?
  答:
  轮询(Round Robin)
  加权轮询(Weighted Round Robin)
  最少连接(Least Connections)
  加权最少连接( Weighted Least Connections )
  源地址哈希值(source hash)
  
  6)如果你们公司的网站访问很慢,你会如何排查?
  答:
  检察流量(Zabbix,ifconfig,sar,ping延迟… …)
  系统负载(Zabbix,uptime,sar,top,ps,free检察CPU和内存)
  日记(数据库日记-慢查询日记、web服务器日记、ELK)
  DNS剖析;ss端口状态、并发量;本机时间(时间错误会导致服务器故障)
  欣赏器F12(开辟者工具)
  
  7)你会用什么方法来检察某个应用服务的流量使用情况?
  答:
  ifconfig eth0(检察网卡团体流量)
  iftop(必要安装iftop软件包,实时检察详细IP、端口的流量,iftop -P)
  iptraf-ng (必要安装iptraf-ng软件包,实时检察IP、端口的流量)
  sar -n DEV(必要安装sysstat软件包,检察历史网卡流量,大概实时检察流量)
  nethogs eth0(必要安装nethogs软件包,实时检察进程流量)
  检察网站的访问日记(利用awk统计资源的大小并求和)
  通过zabbix检察软件流量
   
小结:

本篇章节为【第三阶段】PROJECT1-DAY3 的学习笔记,这篇笔记可以初步了解到 Keepalived高可用、摆设Ceph分布式存储。

Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或必要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人讨教,花点时间直到你真正的理解

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表