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

news2024/11/17 21:24:16

主要内容:

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(负载均衡)

[root@proxy2 ~]# yum -y install haproxy
[root@proxy2 ~]# vim /etc/haproxy/haproxy.cfg
listen wordpress *:80      //监听80端口
  balance roundrobin      //轮询算法
  server web1 192.168.2.11:80 check inter 2000 rise 2 fall 3
  server web2 192.168.2.12:80 check inter 2000 rise 2 fall 3
  server web3 192.168.2.13:80 check inter 2000 rise 2 fall 3
[root@proxy2 ~]# systemctl start haproxy
[root@proxy2 ~]# systemctl enable haproxy
[root@proxy2 ~]# ss -nlptu | grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("haproxy",pid=684,fd=7))
[root@proxy2 ~]# firewall-cmd --set-default-zone=trusted
[root@proxy2 ~]# setenforce 0
[root@proxy2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

步骤2:为两台代理服务器配置keepalived(高可用)—> VIP:192.168.2.80

1)配置第一台代理服务器proxy(192.168.2.5)

[root@proxy ~]# yum install -y keepalived
[root@proxy ~]# vim /etc/keepalived/keepalived.conf
global_defs {
  router_id  proxy1    //设置路由ID号
  vrrp_iptables         //设置防火墙规则(手动添加该行)
}
vrrp_instance VI_1 {
  state MASTER        //主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth1        //网卡名称
  virtual_router_id 51               
  priority 100          //服务器优先级,优先级高优先获取VIP
  advert_int 1
  authentication {
    auth_type pass
    auth_pass 1111     //主备服务器密码必须一致
  }
  virtual_ipaddress {     //VIP地址
  192.168.4.80
}   
}
[root@proxy ~]# systemctl start keepalived
[root@proxy ~]# systemctl enable keepalived

2)配置第二台代理服务器proxy2(192.168.2.6)

[root@proxy2 ~]# yum install -y keepalived
[root@proxy2 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
  router_id  proxy2       //设置路由ID号
  vrrp_iptables              //设置防火墙规则(手动添加该行)
}
vrrp_instance VI_1 {
  state BACKUP           //主服务器为MASTER(备服务器需要修改为BACKUP)
  interface eth1           //网卡名称
  virtual_router_id 51               
  priority 95              //服务器优先级,优先级高优先获取VIP
  advert_int 1
  authentication {
    auth_type pass
    auth_pass 1111      //主备服务器密码必须一致
  }
  virtual_ipaddress {     //VIP地址
  192.168.2.80
}   
}
[root@proxy2 ~]# systemctl start keepalived
[root@proxy2 ~]# systemctl enable keepalived

验证高可用:

1)在优先级高的MASTER主机查看是否有VIP地址

[root@proxy ~]# ip add show eth1 | grep 192.168.2.80    //查看MASTER的VIP
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页面

[root@proxy2 ~]# ip add show eth1 | grep 192.168.2.80
    inet 192.168.2.80/32 scope global eth1

3)在优先级高的MASTER主机上再启动keepalived服务,查看VIP地址是否回到主服务器上;

步骤3:修改DNS服务器

1)修改网站域名对应的解析记录,解析VIP地址

[root@dns ~]# vim /var/named/lab.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      dns.lab.com.
dns     A       192.168.2.10
www     A       192.168.2.10
www     A       192.168.2.80    //添加解析VIP地址记录

2)重启DNS服务

[root@dns ~]# systemctl restart named

验证:

修改/etc/resolv.conf域名解析配置文件,指定DNS域名解析服务器

[root@proxy ~]# vim /etc/resolv.conf
nameserver 192.168.2.10
[root@proxy ~]# nslookup www.lab.com
Server:               192.168.2.10
Address:   192.168.2.10#53
 
Name:      www.lab.com
Address: 192.168.2.10
Name:      www.lab.com
Address: 192.168.2.80

[root@proxy ~]# ping www.lab.com
PING www.lab.com (192.168.2.80) 56(84) bytes of data.
64 bytes from proxy (192.168.2.80): icmp_seq=1 ttl=255 time=0.014 ms
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磁盘

[root@node1 ~]# lsblk     //查看新增的2块磁盘(以node1为例)
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
vdc    253:32   0  20G  0 disk
[root@node2 ~]# lsblk
[root@node3 ~]# lsblk

补充:VMware虚拟机选【设置】--【添加】--【CD|DVD驱动器】--【完成】,点击新建的光盘[CD|DVD],勾选使用ISO映像文件--[浏览],找到真机的ceph10.iso加载即可;添加磁盘,所有3台ceph主机都添加2块20G磁盘,启动所有虚拟机后,查看磁盘情况;

2)为3台ceph服务器添加光驱设备(node1、node2、node3)

  • 方法1:添加光驱设备,并加载ceph10.iso
[root@node1 ~]# blkid /dev/cdrom
/dev/cdrom: UUID="2019-01-24-18-15-06-00" LABEL="CDROM" TYPE="iso9660"
[root@node1 ~]# mount /dev/cdrom /mnt/
[root@node1 ~]# ls /mnt/
EULA  GPL  MON  OSD  README  RPM-GPG-KEY-redhat-release  Tools  TRANS.TBL
[root@node1 ~]# echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab
[root@node1 ~]# mount -a
或者:
[root@node1 ~]# echo "mount /dev/cdrom /mnt" /etc/rc.local
  • 方法2:第二阶段素材ceph10.iso挂载/var/ftp/ceph目录,为所有虚拟机提供YUM源
[root@localhost 桌面]# mkdir /var/ftp/ceph
[root@localhost 桌面]# mount -t iso9660 /linux-soft/2/ceph10.iso /var/ftp/ceph/
[root@localhost 桌面]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop2      284M  284M     0  100% /var/ftp/ceph

3)所有主机设置防火墙和SELinux(所有主机操作)

[root@node1 ~]# firewall-cmd --set-default-zone=trusted
[root@node1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node1 ~]# setenforce 0
[root@node2 ~]# firewall-cmd --set-default-zone=trusted
[root@node2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node2 ~]# setenforce 0
[root@node3 ~]# firewall-cmd --set-default-zone=trusted
[root@node3 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node3 ~]# setenforce 0

4)在node1配置SSH密钥,让node1可用无密码连接node1,node2,node3

配置SSH无密码连接为了同时给其它所有主机远程拷贝文件、安装软件包、启动服务等;

[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
[root@node1 ~]# for i in {41..43}
> do
> ssh-copy-id 192.168.2.$i   //将密钥传递给192.168.2.41、2.42、2.43
> done

解释说明:

# [-f 密钥文件的名称] (创建密钥到哪个文件)

# [ -N '' ] 设置密钥的密码为空(不要给密钥配置密码)

5)修改/etc/hosts域名解析记录(不要删除原文件的数据),同步给所有ceph节点

[root@node1 ~]# vim /etc/hosts
192.168.2.41  node1
192.168.2.42  node2
192.168.2.43  node3
[root@node1 ~]# for i in {41..43}
> do
> scp /etc/hosts 192.168.2.$i:/etc
> done

6)配置所有节点的ceph.iso的YUM源,并同步到所有ceph节点

[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo
[mon]
name=mon
baseurl=file:///mnt/MON
gpgcheck=0
 
[osd]
name=osd
baseurl=file:///mnt/OSD
gpgcheck=0
 
[tools]
name=tools
baseurl=file:///mnt/Tools
gpgcheck=0
[root@node1 ~]# yum repolist
源标识            源名称               状态
local_repo    CentOS-7 - Base         9,911
mon               mon                  41
osd               osd                  28
tools            tools                 33
repolist: 10,013
[root@node1 ~]# for i in {42,43}     //远程访问并进行mount永久挂载
> do
> ssh 192.168.2.$i "echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab ; mount -a"
> done
[root@node1 ~]# for i in {42,43}
> do
> scp /etc/yum.repos.d/ceph.repo 192.168.2.$i:/etc/yum.repos.d/
> done

7)配置NTP服务器同步时间

  • node1为NTP服务器
[root@node1 ~]# vim /etc/chrony.conf
allow 192.168.2.0/24      //修改26行
local stratum 10          //修改29行(去注释即可)
[root@node1 ~]# systemctl restart chronyd
  • node2和node3做NTP客户端
[root@node2 ~]# vim /etc/chrony.conf
server 192.168.2.41 iburst   
[root@node2 ~]# systemctl restart chronyd
[root@node2 ~]# chronyc sources -v      //查看时间同步结果,【^*】
210 Number of sources = 1
 
  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample              
===============================================================================
^* node1                        10   6    37    40     -5ns[ -470us] +/-  168us
 
[root@node3 ~]# vim /etc/chrony.conf
server 192.168.2.41 iburst         
[root@node3 ~]# systemctl restart chronyd
[root@node3 ~]# chronyc sources -v     //查看时间同步结果,【^*】

步骤2:部署ceph集群,分布式存储系统(OSD、MON)

1)给node1主机安装ceph-deploy管理工具,创建并切换工作目录

[root@node1 ~]# yum -y install ceph-deploy
[root@node1 ~]# mkdir ceph-cluster ; cd ceph-cluster
[root@node1 ceph-cluster]#

2)给所有ceph节点安装ceph相关软件包

[root@node1 ceph-cluster]# for i in node{1..3}
> do
> ssh $i "yum -y install ceph-mon ceph-osd ceph-mds"
> done

3)初始化MON服务

[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3  //生成ceph配置文件
[root@node1 ceph-cluster]# ceph-deploy mon create-initial     //拷贝ceph配置文件给node1、node2、node3,启动所有节点的mon服务
[root@node1 ceph-cluster]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmp8O0CCk
[root@node2 ~]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpA_W5Rj
[root@node3 ~]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpnWxN6H

查看ceph状态(此时失败是正常的)

[root@node1 ceph-cluster]# ceph -s
    cluster b752cdca-c028-4b0c-ae1b-c8bf7dac0b48
     health HEALTH_ERR
            no osds
     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}
            election epoch 6, quorum 0,1,2 node1,node2,node3
     osdmap e1: 0 osds: 0 up, 0 in
            flags sortbitwise
      pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects
            0 kB used, 0 kB / 0 kB avail
                  64 creating
[root@node1 ceph-cluster]# systemctl status ceph-mon@node1
[root@node2 ceph-cluster]# systemctl status ceph-mon@node2
[root@node3 ceph-cluster]# systemctl status ceph-mon@node3

4)使用ceph-deploy工具,初始化数据磁盘

[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc \
node2:vdb node2:vdc node3:vdb node3:vdc

5)初始化OSD集群,创建OSD存储空间

[root@node1 ceph-cluster]# ceph-deploy osd create node1:vdb node1:vdc \
node2:vdb node2:vdc node3:vdb node3:vdc

查看ceph状态

[root@node1 ceph-cluster]# ceph osd tree
ID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 0.08752 root default                                    
-2 0.02917     host node1                                  
 0 0.01459         osd.0       up  1.00000          1.00000
 1 0.01459         osd.1       up  1.00000          1.00000
-3 0.02917     host node2                                  
 2 0.01459         osd.2       up  1.00000          1.00000
 3 0.01459         osd.3       up  1.00000          1.00000
-4 0.02917     host node3                                  
 4 0.01459         osd.4       up  1.00000          1.00000
 5 0.01459         osd.5     down        0          1.00000
 
[root@node1 ceph-cluster]# ceph -s
    cluster b752cdca-c028-4b0c-ae1b-c8bf7dac0b48
     health HEALTH_OK
     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}
            election epoch 6, quorum 0,1,2 node1,node2,node3
     osdmap e44: 6 osds: 6 up, 6 in
            flags sortbitwise
      pgmap v75: 64 pgs, 1 pools, 0 bytes data, 0 objects
            203 MB used, 91890 MB / 92093 MB avail
                  64 active+clean
                  
[root@node1 ceph-cluster]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/vdb1      15G   35M   15G    1% /var/lib/ceph/osd/ceph-0
/dev/vdc1      15G   34M   15G    1% /var/lib/ceph/osd/ceph-1

步骤3:部署ceph文件系统

1)启动mds服务(可在node1、node2、node3启动,也可在多台主机启动mds)

[root@node1 ceph-cluster]# ceph-deploy mds create node3

2)创建存储池(文件系统由inode和block组成)

[root@node1 ceph-cluster]# ceph osd pool create cephfs_data 64
pool 'cephfs_data' created
[root@node1 ceph-cluster]# ceph osd pool create cephfs_metadata 64
pool 'cephfs_metadata' created
[root@node1 ceph-cluster]# ceph osd lspools     //查看共享池
0 rbd,1 cephfs_data,2 cephfs_metadata,

3)创建文件系统

[root@node1 ceph-cluster]# ceph fs new myfs1 cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[root@node1 ceph-cluster]# ceph fs ls    //查看文件系统
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

步骤4:迁移网站数据到ceph集群

1)卸载web1、web2、web3的NFS共享

暂停服务防止有人实时读写文件

[root@web1 ~]# systemctl stop nginx.service      //停止Nginx服务
[root@web2 ~]# systemctl stop nginx.service
[root@web3 ~]# systemctl stop nginx.service
[root@web1 ~]# umount /usr/local/nginx/html      //卸载挂载
[root@web2 ~]# umount /usr/local/nginx/html
[root@web3 ~]# umount /usr/local/nginx/html
[root@web1 ~]# vim /etc/fstab     //注释/etc/fstab开机挂载
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web2 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web3 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0

2)web服务器永久挂载Ceph文件系统(web1、web2、web3都需要操作)

① 在任意ceph节点,如node1查看ceph账户与密码

[root@node1 ceph-cluster]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
         key = AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==

② 安装ceph-common的客户端软件

[root@web1 ~]# yum -y install ceph-common
[root@web2 ~]# yum -y install ceph-common
[root@web3 ~]# yum -y install ceph-common

③ 挂载Ceph文件系统

[root@web1 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
[root@web1 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
[root@web1 ~]# chmod +x /etc/rc.local
 
[root@web2 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
[root@web2 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
[root@web2 ~]# chmod +x /etc/rc.local
 
[root@web3 ~]# mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==
[root@web3 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ -o name=admin,secret=AQB6r7BgH3uCFhAAOA2h9lK8D6N7huL0bBJmyA==' >> /etc/rc.local
[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文件系统:

[root@web1 ~]# df -h /usr/local/nginx/html
文件系统             容量  已用  可用 已用% 挂载点
192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html
[root@web2 ~]# df -h /usr/local/nginx/html
文件系统             容量  已用  可用 已用% 挂载点
192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html
[root@web3 ~]# df -h /usr/local/nginx/html/
文件系统             容量  已用  可用 已用% 挂载点
192.168.2.41:6789:/   90G  208M   90G    1% /usr/local/nginx/html

补充:另一种解决方案,通过fstab实现永久挂载

提示:如果希望使用fstab实现永久挂载,客户端需要额外安装libcephfs1软件包。

[root@web1 ~]# yum -y install libcephfs1
[root@web1 ~]# vim /etc/fstab
… …
192.168.2.41:6789:/ /usr/local/nginx/html/    ceph   defaults,_netdev,name=admin,secret=AQCVcu9cWXkgKhAAWSa7qCFnFVbNCTB2DwGIOA== 0 0

补充:对于高可用的问题,可以在mount时同时写入多个IP

  • 临时命令:
[root@web1 ~]# mount -t ceph  \
192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html  \
-o name=admin,secret=密钥
  • 永久修改:
[root@web1 ~]# vim /etc/fstab
192.168.2.41:6789,192.168.2.42:6789,192.168.2.43:6789:/ /usr/local/nginx/html/ \
ceph defaults,_netdev,name=admin,secret=密钥 0 0

3)迁移NFS服务器中的数据到Ceph存储

登陆NFS服务器备份网站数据,将备份的数据拷贝给web1或web2或web3(共享存储池),tar备份数据时注意使用-p选项保留文件权限;

[root@nfs ~]# cd /web_share/
[root@nfs web_share]# tar -czpf /root/html.tar.gz ./*
[root@nfs web_share]# scp /root/html.tar.gz 192.168.2.11:/usr/local/nginx/html/
[root@web1 ~]# ls /usr/local/nginx/html
html.tar.gz
[root@web1 ~]# cd /usr/local/nginx/html/
[root@web1 html]# tar -xf html.tar.gz
[root@web1 ~]# ls /usr/local/nginx/html
50x.html     license.txt         wp-comments-post.php  wp-includes        wp-settings.php
a.html       readme.html         wp-config.php         wp-links-opml.php  wp-signup.php
html.tar.gz  wp-activate.php     wp-config-sample.php  wp-load.php        wp-trackback.php
index.html   wp-admin            wp-content            wp-login.php       xmlrpc.php
index.php    wp-blog-header.php  wp-cron.php          wp-mail.php

4)恢复web服务的Nginx服务

[root@web1 ~]# systemctl start nginx.service
[root@web2 ~]# systemctl start nginx.service
[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的过程不能输出信息到终端)?

答:

#!/bin/bash
for i in {200..220}
do
ping -c 4  -i 0.2  -W 1  192.168.1.$i &>/dev/null
if  [  $? -ne 0 ];then
    echo  "192.168.1.$i is down" >> log.txt
fi
done

5)假设nginx的访问日志格式如下,统计访问页面前10位的IP数?

答:awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' 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

要求:编写脚本获取主机名、域名,并统计每个域名出现的次数,并排序。

答:

#!/bin/bash
awk -F"[/.]" '{print $3}' txt    #单独获取主机名
awk -F"[/]" '{print $3}'  txt    #获取完整域名
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:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java面试】第十一天

🌟个人主页:时间会证明一切. 目录 Springboot是如何实现自动配置的?Spring的Autowired能用在Map上吗?ListMapSet数组注意事项 Spring的AOP在什么场景下会失效? Springboot是如何实现自动配置的? Spring Bo…

【开源免费】基于SpringBoot+Vue.JS高校心理教育辅导系统(JAVA毕业设计)

本文项目编号 T 031 ,文末自助获取源码 \color{red}{T031,文末自助获取源码} T031,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

嵌入式C语言自我修养:C语言的面向对象编程思想

⭐关联知识点:C和C的区别 代码复用与分层思想 什么是代码复用呢? (1)函数级代码复用:定义一个函数实现某个功能,所有的程序都可以调用这个函数,不用自己再单独实现一遍,函数级的代…

【YashanDB知识库】单机升级典型问题及应急措施

升级典型问题 官网升级操作指引 离线升级,一般线上操作之前需要照着做一遍,但是由于数据量少、monit进程在测试环境没有启动等原因,一些操作、配置问题在测试过程中不会暴露,在生成操作的时候才暴露,下面3项是比较常见…

你也喜欢“钓鱼“吗?

免责声明:本文仅做分享! 目录 什么是网络钓鱼 流程 攻击手法 0-隐藏自己 1-office宏 创建xxx.dotm 创建xxx.docx 2-RLO 自解压 3-快捷方式lnk 4-邮件伪造 Swaks Gophish 5-网站克隆 setoolkit nginx反向代理 前端页面克隆 6-wifi钓鱼 7-其他 防御 溯源 反…

分布式云化数据库的优缺点分析

分布式云化数据库的优点主要体现在高可用性和容错性、可扩展性、体系结构、数据一致性、成本、升级迭代等方面。同时也存在一些缺点,如通信开销较大、数据的存取结构复杂、数据安全性难以保证、系统复杂性、高并发访问性能问题以及节点故障风险等。以下是对分布式云…

Ruoyi Cloud K8s 部署

参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/morecccc/article/details/1…

hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)

hku-mars雷达相机时间同步方案复线(MID360与海康MV-CB060-10UMUC-S) 参考 官方指导教程 硬件设备: 硬件同步原理连接方案: 注意: 在我们这个项目中,stm32中GPRMC该数据直接传到Mid360雷达中,由…

筑牢网络安全防线:为数字时代保驾护航

《筑牢网络安全防线:为数字时代保驾护航》 一、网络安全:数字时代的关键课题 网络安全在当今数字时代的重要性愈发凸显。2024 年国家网络安全宣传周以 “网络安全为人民,网络安全靠人民” 为主题,深刻体现了网络安全与每个人息息…

最佳实践 · MySQL 分区表实战指南

引言 在数据量急剧增长的今天,传统的数据库管理方式可能无法有效处理海量数据的存储和查询需求。MySQL 提供了分区表功能,这不仅能够帮助优化性能,还能简化数据管理过程。分区表允许将数据表拆分成多个逻辑上的分区,每个分区可以…

【特点】浅谈大模型的特点

在人工智能(AI)的发展历程中,大模型无疑是一个重要的里程碑。大模型是指利用海量数据,通过先进的算法和技术,训练得到的具有强大预测和决策能力的模型,这类模型具备了强大的语言理解和生成能力,能够完成各种复杂的自然…

【近源攻击】badusb制作

❤️博客主页: iknow181 🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP 🎉欢迎大家点赞👍收藏⭐评论✍ 在这篇博客中,我将详细介绍如何从零开始使用 ATtiny85 开发板制作一个 BadUSB。通过这个教程…

如何管理付费媒体预算:分配、风险与扩展

对于优先考虑利润率和现金流的企业而言,管理广告预算是一项基本技能。由于人为错误导致的超支几乎总是意味着与客户和利益相关者的艰难对话。这时候,借助光年AI智能平台可以极大程度地降低这种风险,通过AI驱动的全面流量和增长服务&#xff0…

拥塞控制算法为何失效,网络为何难以测量?

紧接着上文 如何测量一个(传输网络)系统的容量 给出的方法,看一下如何测量网络容量,如果真的能测量网络容量,传输算法就好设计了。 先给出答案,很遗憾,根本无法测量,请阅读 why we don’t know how to sim…

前端-CDN的理解及CDN一些使用平台

目录 1.CDN的概念 (1) 分发服务系统 (2)均衡负荷系统 (3)运营管理系统 (4)缓存系统 (5)支撑系统 2.CDN的基本工作原理 3.CDN使用缓存资源过程 4.CDN…

CesiumJS+SuperMap3D.js混用实现天际线分析

版本简介: cesium:1.99;Supermap3D:SuperMap iClient JavaScript 11i(2023); 官方下载文档链家:SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考:support.supermap.com.cn:8090/w…

【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity)

总览 1.arduino 代码和库等… 2.Unity 的部分,创建一个 3D 工程,然后创建一个 cube,绑定一个脚本文件 3.效果预览: 【Arduino】BNO085 姿态的 3D模型 展示方法(映射到 Unity) 一、Arduino 部分 1.使用的…

《Exploit temporal cues in multi-camera 3D object detection》论文泛读

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4666749915775385601eId2491528568128599808 针对单帧数据含有的信息太少的问题,提出了一种新的方法,BEVDet4D,这种方法可以访问时间线索,并且取得了较好的表现&#xff…

C++类与对象深度解析(一):从抽象到实践的全面入门指南

文章目录 C 类与对象——详细入门指南前言1. 类的定义1.1 类定义的基本格式示例代码解释 1.2 访问限定符示例代码解释 1.3 类域示例代码解释 1.4 成员命名规范常见的命名约定:示例:拓展: 1.5 class与struct的默认访问权限示例: 2.…

Leetcode 每日一题:Decode String

写在前面: 最近求职季找工作忙的焦头烂额,同时这个学期的助教工作也比之前的工时多了一倍,昨天又拖更了真的对不起大家~~ 今天我们来看一道稍微轻松一点的题,这道题目来源于 Valid Parenthesis&#xff0…