练习

[TOC]

1、

2、

3、

4、

10、公司内部搭建自己的DNS服务器用来上网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
两台机器,其中一台做DNS服务器
[root@Rocky8 ~]#dnf -y install bind bind-utils #安装DNS
[root@Rocky8 ~]#systemctl status named #查看DNS服务是否启动
[root@Rocky8 ~]#systemctl enable --now named #设置DNS为开机启动,且立即启动
[root@Rocky8 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=127.0.0.1 #将自己的机器设置为DNS
:wq
[root@Rocky8 network-scripts]#nmcli connection reload
[root@Rocky8 network-scripts]#nmcli connection up eth0 #通过两步命令保存生效
#此时已经将此机器设置为DNS服务器了

[root@Centos7 ~]#yum -y install bind-utils #在另一台机器上安装DNS客户端
[root@Centos7 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=10.0.0.128 #访问公司的DNS网址,并将其他DNS删除
:wq
[root@Centos7 ~]#systemctl restart network
[root@Centos7 ~]#host www.baidu.com
;; connection timed out; no servers could be reached #表示无法连接DNS服务器
#说明自己设置的DNS器有限制

[root@Rocky8 ~]#ss -ntlu #显示只有127.0.0.1(本机地址)机器在监听
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:*
[root@Rocky8 ~]#vim /etc/named.conf
listen-on port 53 { localhost; }; #将127.0.0.1改为localhost,localhost表示本机所有IP;或者将此行用//注释掉;或者在127.0.0.1;后面添加其他允许访问的IP地址
:wq
[root@Rocky8 ~]#named-checkconf #此命令可以检查语法错误
#更改完文件后重新加载文件,或者用命令systemctl restart named重新启动DNS
[root@Rocky8 ~]#rndc reload
server reload successful #表示加载成功
[root@Rocky8 ~]#ss -ntlu #本机所有IP已添加
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:*
udp UNCONN 0 0 10.0.0.128:53 0.0.0.0:*
[root@Centos7 ~]#host www.baidu.com
Host www.baidu.com.zhang.org not found: 5(REFUSED) #访问被拒绝
[root@Rocky8 ~]#vim /etc/named.conf
// allow-query { localhost; }; #此行说的是只允许本机访问,需让其他机器也可以访问,方法有三种:①加//将此行注释,所有机器都可以访问②将localhost更改为any,所有机器都允许③在localhost;添加允许访问的IP地址
:wq
[root@Rocky8 ~]#named-checkconf #此命令可以检查语法错误
[root@Rocky8 ~]#rndc reload
[root@Centos7 ~]#host www.baidu.com #此时访问成功,dig命令更详细
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 220.181.38.150
www.a.shifen.com has address 220.181.38.149
#此时公司内的机器可以通过公司内自己搭建的DNS访问网络了

11、公司内部机器互相访问(正向解析)

假设:公司内部都使用的是magedu.org域名,

​ 其他机器分别是www.magedu.org 10.0.0.184 (是一个对外提供服务的网站)

​ k8s.magedu.org

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@Rocky ~]#yum -y install httpd              #10.0.0.184机器安装http
[root@Rocky ~]#systemctl enable --now httpd ;echo hello > /var/www/html/index.html #开机启动且立即启动,并在网页上输入内容hello
#此时已经可以在浏览器上直接通过IP地址访问网页了
#下一步希望可以直接通过域名www.magedu.org直接访问网页需要搭建DNS
[root@Rocky8 ~]#cd /var/named #在公司搭建DNS的机器上添加解析域名的数据库文件
[root@Rocky8 named]#ll #可以看见数据库文件权限是640,账号是root组是named
-rw-r----- 1 root named 2253 4月 13 05:31 named.ca
-rw-r----- 1 root named 152 4月 13 05:31 named.empty
-rw-r----- 1 root named 152 4月 13 05:31 named.localhost
-rw-r----- 1 root named 168 4月 13 05:31 named.loopback
[root@Rocky8 named]#touch magedu.org.zone #创建magedu.org所属文件数据库
[root@Rocky8 named]#chmod 640 magedu.org.zone #修改文件权限
[root@Rocky8 named]#chgrp named magedu.org.zone #修改文件所属组
[root@Rocky8 named]#ll magedu.org.zone
-rw-r----- 1 root named 0 9月 28 09:43 magedu.org.zone
[root@Rocky8 named]#vim magedu.org.zone #编写数据库文件
$TTL 1D #记录的缓存周期TTL 一天
@ IN SOA master admin.magedu.org. ( 0 1D 10M 1D 6H )
magedu.org. NS master #magedu.org.可省略,NS名称解析服务器
NS slave1 #slave1表示从DNS服务器
master A 10.0.0.128 #A表示是IPV4,AAAA表示为IPV6
slave1 A 10.0.0.216 www A 10.0.0.184
k8s A 10.0.0.217
#@表示当前的域名(magedu.org.)两者可以互换(使用@更便捷,如果域名更改了,文件内不需要更改);
#SOA类型必须在第一行(TTL除外);
#master表示主DNS服务器的名称(全名称是master.magedu.org.);
#admin.magedu.org.是邮箱(admin@magedu.org.);
#0表示的版本号,更改一次文件版本号需增加1(版本号发生变化,主服务器推送到从服务器。另外从服务器固定时间间隔检测发现版本号发生变化时,从服务器拉取数据);
#1D表示每隔1天从服务器拉去一次数据;
#10M表示第一次拉取失败后,每隔10分钟从新拉取一次直至成功;
#1D表示过期时间,1天时间从服务器联系不上主服务器后,从服务器也不再提供服务避免数据错误(主服务器可能已经更新数据了);
#6H表示错误数据的缓存时间(访问错误网址时,将此错误网址缓存下来,下次访问直接反馈,减少时间)。[root@Rocky8 etc]#named-checkzone magedu.org /var/named/magedu.org.zone
zone magedu.org/IN: loaded serial 0
OK #检查语法是否错误,没有错误

配置好解析数据库文件后,但DNS无法识别,需要再编辑DNS配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@Rocky8 ~]#vim /etc/named.conf          #编辑DNS配置文件,增加magedu.org
zone "magedu.org" IN {
type master;
file "magedu.org.zone";
}; #IN可以省略不写
#或者可以直接将zone写到其他文件里,不用写到named.conf
[root@Rocky8 ~]#vim /etc/named.rfc1912.zones
zone "magedu.org" {
type master;
file "magedu.org.zone";
};
:wq
[root@Rocky8 ~]#vim /etc/named.conf #编辑配置文件
listen-on port 53 { localhost; }; #将127.0.0.1改为localhost,localhost表示本机所有IP;或者将此行用//注释掉;或者在127.0.0.1;后面添加其他允许访问的IP地址
// allow-query { localhost; }; #此行说的是只允许本机访问,需让其他机器也可以访问,方法有三种:①加//将此行注释,所有机器都可以访问②将localhost更改为any,所有机器都允许③在localhost;添加允许访问的IP地址
:wq
[root@Rocky8 etc]#named-checkconf #检查DNS配置文件的语法是否错误
[root@Rocky8 etc]#rndc reload
server reload successful #重新加载数据,加载成功
[root@Centos7 ~]#host www.magedu.org
www.magedu.org has address 10.0.0.184 #此时其他机器就可以访问到了

此时用浏览器访问www.magedu.org,无法访问

image-20220928111609509

无法访问是因为windows的DNS没有指向10.0.0.128,所以不成功,需更改其DNS

image-20220928112113407

此时可以查看是否可以访问

方法1直接浏览器访问

方法2使用管理员命令提示符查找:nslookup www.magedu.org

如果访问不成功说明有其他DNS,需更改其他网络的DNS

image-20220928112950256

12、公司内部机器互相访问(反向解析)

把IP地址解析成网址 10.0.0.184 –> www.magedu.org

1
2
3
4
   10.0.0.184                 -->   www.magedu.org
10.0.0.217 --> k8s.magedu.org
184.0.0.10.in-addr.arpa. --> www.magedu.org
217.0.0.10.in-addr.arpa. --> k8s.magedu.org

编辑配置文件和解析数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[root@Rocky8 ~]#vim /etc/named.rfc1912.zones         #编辑配置文件
zone "0.0.10.in-addr.arpa" {
type master;
file "10.0.0.zone";
};
:wq
[root@Rocky8 ~]#vim /etc/named.conf
listen-on port 53 { localhost; }; #将127.0.0.1改为localhost,localhost表示本机所有IP;或者将此行用//注释掉;或者在127.0.0.1;后面添加其他允许访问的IP地址
// allow-query { localhost; }; #此行说的是只允许本机访问,需让其他机器也可以访问,方法有三种:①加//将此行注释,所有机器都可以访问②将localhost更改为any,所有机器都允许③在localhost;添加允许访问的IP地址
:wq
[root@Rocky8 ~]#named-checkconf #检查语法错误
[root@Rocky8 ~]#cd /var/named
[root@Rocky8 named]#vim 10.0.0.zone #添加解析数据库
$TTL 1D
@ IN SOA master admin.magedu.org ( 3 1D 10M 1D 6H )
NS master
master A 10.0.0.128
184 PTR www.magedu.org.
217 PTR k8s.magedu.org.
:wq
[root@Rocky8 named]#chmod 640 10.0.0.zone #修改权限
[root@Rocky8 named]#chgrp named 10.0.0.zone #修改所属组
[root@Rocky8 named]#named-checkzone 0.0.10.in-addr.arpa /var/named/10.0.0.zone
zone 0.0.10.in-addr.arpa/IN: loaded serial 3
OK #检查语法是否有误,语法正确
[root@Rocky8 named]#rndc reload
server reload successful #重新加载数据,成功加载
[root@Centos7 ~]#dig -t ptr 184.0.0.10.in-addr.arpa #用其他机器访问成功
;; ANSWER SECTION:
184.0.0.10.in-addr.arpa. 86400 IN PTR www.magedu.org.
#或者用以下两种命令访问
[root@Centos7 ~]#dig -x 10.0.0.184 #此命令更简洁
;; ANSWER SECTION:
184.0.0.10.in-addr.arpa. 86400 IN PTR www.magedu.org.
[root@Centos7 ~]#host 10.0.0.184 #此命令更简洁
184.0.0.10.in-addr.arpa domain name pointer www.magedu.org.

13、搭建从DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
10.0.0.184当从服务器
[root@Rocky ~]#yum -y install bind #安装DNS服务器
[root@Rocky ~]#vim /etc/named.conf #编辑配置文件
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
:wq
[root@Rocky ~]#vim /etc/named.rfc1912.zones #配置文件里添加以下内容
zone "magedu.org" {
type slave;
master {10.0.0.128;};
file "slaves/magedu.org.zone.slave";
}; #有这个文件夹(从服务器):slaves/
:wq
[root@Rocky ~]#named-checkconf
[root@Rocky ~]#systemctl enable --now named #启动服务,就把magedu.org.zone.slave文件复制过来了
[root@Rocky ~]#ls /var/named/slaves/ -l
total 4
-rw-r--r-- 1 named named 374 Sep 28 18:32 magedu.org.zone.slave

此时我们可以从其他机器从此从服务器访问了

1
2
3
4
5
6
7
8
9
[root@Centos7 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS2=10.0.0.184 #添加此DNS
:wq
[root@Centos7 ~]#systemctl restart network #重新启动
[root@Rocky8 named]#systemctl stop named #先将主服务器关闭
[root@Centos7 ~]#dig www.magedu.org
;; ANSWER SECTION:
www.magedu.org. 86400 IN A 10.0.0.184
;; SERVER: 10.0.0.184#53(10.0.0.184)

但是如果主服务器发生变化时,从服务器接收不到,需在主服务器进行以下设置

1
2
3
4
5
6
7
8
9
10
11
[root@Rocky8 named]#systemctl start named     #前面刚关闭了,需开启
[root@Rocky8 named]#vim /var/named/magedu.org.zone
NS slave1
slave1 A 10.0.0.184 #在主服务器里面增加从服务器的地址(没有地址,主服务器不知道推送到哪)
www A 10.0.0.185 #将184改为185
:wq
[root@Rocky8 named]#named-checkzone magedu.org /var/named/magedu.org.zone
[root@Rocky8 named]#rndc reload
[root@Centos7 ~]#dig www.magedu.org @10.0.0.184
;; ANSWER SECTION:
www.magedu.org. 86400 IN A 10.0.0.185 #此时可以查到网址的IP地址已发生变化

此时发现从服务器从主服务器拉取数据时不经过主服务器的允许,不安全(任何人都可以获取)。

而且根本不需要设置从节点就可以把数据获取,如下:

1
2
3
4
5
6
7
[root@Centos7 ~]#dig -t axfr magedu.org
magedu.org. 86400 IN NS master.magedu.org.
magedu.org. 86400 IN NS slave1.magedu.org.
k8s.magedu.org. 86400 IN A 10.0.0.217
master.magedu.org. 86400 IN A 10.0.0.128
slave1.magedu.org. 86400 IN A 10.0.0.184
www.magedu.org. 86400 IN A 10.0.0.184

为了安全需要在主服务器增加设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@Rocky8 ~]#vim /etc/named.conf
// allow-query { localhost; };
allow-transfer {10.0.0.184; }; #增加此命令,表示只允许10.0.0.184获取数据
:wq
[root@Rocky8 ~]#named-checkconf
[root@Rocky8 ~]#rndc reload
server reload successful
[root@Centos7 ~]#dig -t axfr magedu.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t axfr magedu.org
;; global options: +cmd
; Transfer failed. #其他机器已经无法在主服务器抓取了

[root@Centos7 ~]#dig -t axfr magedu.org @10.0.0.184
magedu.org. 86400 IN NS master.magedu.org.
magedu.org. 86400 IN NS slave1.magedu.org.
k8s.magedu.org. 86400 IN A 10.0.0.217
master.magedu.org. 86400 IN A 10.0.0.128
slave1.magedu.org. 86400 IN A 10.0.0.184
www.magedu.org. 86400 IN A 10.0.0.184
#但其他机器可以从‘从服务器’抓取

此时需要更改从服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@Rocky ~]#vim /etc/named.conf
// allow-query { localhost; };
allow-transfer {none; }; #增加此命令,表示不允许任何人抓取数据
:wq
[root@Rocky ~]#named-checkconf
[root@Rocky ~]#rndc reload
server reload successful

[root@Centos7 ~]#dig -t axfr magedu.org @10.0.0.184
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t axfr magedu.org @10.0.0.184
;; global options: +cmd
; Transfer failed.
#从服务器也无法整体抓取数据
#如果知道完整的域名,还是可以获取IP地址的

14、泛域名解析(

比如客户输错网址,输入ww.magedu.org任何网页都打不开,无论是想访问www.magedu.org还是访问k8s.magedu.org,只要magedu.org输入没问题,我就强制让你访问www.magedu.org,此为泛域名解析。

1
2
3
4
5
6
7
8
9
[root@Rocky8 ~]#cd /var/named/
[root@Rocky8 named]#vim magedu.org.zone #在DNS服务器端编辑数据库
* A 10.0.0.184 #增加此项,即可完成泛域名解析
:wq
[root@Rocky8 named]#rndc reload
server reload successful
[root@Centos7 ~]#dig wwww.magedu.org
;; ANSWER SECTION:
wwww.magedu.org. 86400 IN A 10.0.0.184

有时候客户只输入magedu.org,此时也希望可以打开网站

1
2
3
4
5
6
7
8
[root@Rocky8 named]#vim magedu.org.zone               #在DNS服务器端编辑数据库
@ A 10.0.0.184 #增加此项,即可完成泛域名解析
:wq
[root@Rocky8 named]#rndc reload
server reload successful
[root@Centos7 ~]#dig magedu.org
;; ANSWER SECTION:
magedu.org. 86400 IN A 10.0.0.184

15、子域委派

比如:本部是magedu.org. 访问本部网址:www.magedu.org .

要在深圳开分公司,需要派发子域可以设为sz.magedu.org. 访问分部网址:www.sz.magedu.org.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#首先在本部DNS设置解析数据库
[root@Rocky8 named]#vim magedu.org.zone
sz NS slave2 #sz.magedu.org.可省略为sz;slave2也可以写成其他名字
slave2 A 10.0.0.216
:wq
[root@Rocky8 named]#rndc reload
server reload successful

#然后设置分部的DNS
[root@Centos7 ~]#yum -y install bind bind-utils #安装DNS
[root@Centos7 ~]#vim /etc/named.conf #编辑配置文件
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
:wq
[root@Centos7 ~]#vim /etc/named.rfc1912.zones #编辑配置文件
zone "sz.magedu.org" {
type master;
file "sz.magedu.org.zone";
}; #此DNS是分部的主DNS所以是master
:wq
[root@Centos7 ~]#vim /var/named/sz.magedu.org.zone #添加sz.mageu.org.zone数据库
$TTL 1D
@ IN SOA slave2 admin.sz.magedu.org. ( 0 1H 10M 1D 2H )
NS slave2
slave2 A 10.0.0.216
www A 10.0.0.129
:wq
[root@Centos7 ~]#chmod 640 /var/named/sz.magedu.org.zone
[root@Centos7 ~]#chgrp named /var/named/sz.magedu.org.zone
#配置完成后启动DNS服务
[root@Centos7 named]#systemctl enable --now named

15、客户端是否有缓存

ubuntu客户端有缓存,

centos客户端没有缓存,centos需要单独安装缓存软件(如nscd软件)

16、实现内网访问可以访问外网,反之禁止

环境准备:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
外部网络:eth0 仅主机 192.168.10.216/24  GW:192.168.10.184
防火墙firewall:eth0 NAT模式 10.0.0.184/24
eth1 仅主机 192.168.10.184/24
内部机器:eth0 NAT模式 10.0.0.217/24 GW:10.0.0.184

为了便于识别
[root@Rocky ~]#hostnamectl set-hostname firewall
[root@Rocky ~]#exit
[root@firewall ~]# #已经主机名改为firewall
[root@firewall ~]#ip a
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.10.131/24 #IP地址不符,需更改
[root@firewall ~]#nmcli connection
NAME UUID TYPE DEVICE
eth0 d1dec401-b113-419c-af2b-e95046f315f5 ethernet eth0
Wired connection 2 99ed1792-006d-38f8-976b-1a356bd3efad ethernet eth1
[root@firewall ~]#nmcli connection modify Wired\ connection\ 2 con-name eth1 #更改名字为eth1
[root@firewall ~]#nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.10.184/24 #更改IP地址
[root@firewall ~]#nmcli connection reload
[root@firewall ~]#nmcli connection up eth1 #两步命令加载生效

安装服务
[root@centos ~]#yum -y install httpd #192.168.10.216/24
[root@Centos7 ~]#hostname internet #192.168.10.216/24
[root@centos ~]#yum -y install httpd #10.0.0.217/24
[root@centos ~]#hostname lan #10.0.0.217/24

[root@internet network-scripts]#vim ifcfg-eth0
IPADDR=192.168.10.216
NETMASK=255.255.255.0
GATEWAY=192.168.10.184
[root@Centos7 network-scripts]#systemctl restart network

准备实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@lan ~]#ping 192.168.10.216        #发现ping不通
[root@firewall network-scripts]#tcpdump -i eth0 -nn icmp #发现防火墙收到包但没有回应
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
09:16:58.972265 IP 10.0.0.219 > 192.168.10.216: ICMP echo request, id 6931, seq 206, length 64
09:16:59.972323 IP 10.0.0.219 > 192.168.10.216: ICMP echo request, id 6931, seq 207, length 64

#此时需要允许包通过,所以需要设置forward
[root@firewall ~]#sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
[root@firewall ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@firewall ~]#sysctl -p #加载生效
net.ipv4.ip_forward = 1
#此时已经可以ping通了

#但此时是双向可以ping,需要设置forward链的规则
[root@firewall ~]#iptables -A FORWARD -j REJECT #添加拒绝所有的访问,双方互不相通
[root@firewall ~]#iptables -I FORWARD -s 10.0.0.0/24 ! -d 10.0.0.0/24 -m state --state NEW -j ACCEPT #允许10.0.0.0/24网段给非此网段的发起请求(注意此时只是允许首次连接的发起请求允许通过,目标的回应不允许通过)
[root@firewall ~]#iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT #允许所有网段的二次响应的通过(即目标的回应允许通过)
#此时内部可以访问外部,但外部不能访问内部

17、内部大部分机器不允许外部访问,但各别机器允许访问

1
2
3
在上面的设置中,再添加一条规则即可
[root@firewall ~]#iptables -I FORWARD 3 ! -s 10.0.0.0/24 -d 10.0.0.129 -m state --state NEW -j ACCEPT
#即允许外部访问内部的10.0.0.129机器

需注意的是公司其实不采用此方法,因为公司内部的机器IP地址是私有IP地址,私有地址无法访问公有地址

私有IP地址:局域网使用,10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

公有IP地址:互联网主机使用,全球唯一

18、为了实现内部私网地址与外部的公网地址互通

此时采用的是NAT设置(只是用IP地址进行转换,因内部机器不是只有一台,回应无法识别,所以需要增加端口号的识别。端口号范围:0-65535)

image-20221008101309023

环境准备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
外部网络:eth0 仅主机 192.168.10.216/24
防火墙firewall:eth0 NAT模式 10.0.0.184/24
eth1 仅主机 192.168.10.184/24
内部机器:eth0 NAT模式 10.0.0.217/24 GW:10.0.0.184

为了便于识别
[root@Rocky ~]#hostnamectl set-hostname firewall
[root@Rocky ~]#exit
[root@firewall ~]# #已经主机名改为firewall
[root@firewall ~]#ip a
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.10.131/24 #IP地址不符,需更改
[root@firewall ~]#nmcli connection
NAME UUID TYPE DEVICE
eth0 d1dec401-b113-419c-af2b-e95046f315f5 ethernet eth0
Wired connection 2 99ed1792-006d-38f8-976b-1a356bd3efad ethernet eth1
[root@firewall ~]#nmcli connection modify Wired\ connection\ 2 con-name eth1 #更改名字为eth1
[root@firewall ~]#nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.10.184/24 #更改IP地址
[root@firewall ~]#nmcli connection reload
[root@firewall ~]#nmcli connection up eth1 #两步命令加载生效

安装服务
[root@centos ~]#yum -y install httpd #192.168.10.216/24
[root@Centos7 ~]#hostname internet #192.168.10.216/24
[root@centos ~]#yum -y install httpd #10.0.0.217/24
[root@centos ~]#hostname lan #10.0.0.217/24

[root@internet network-scripts]#vim ifcfg-eth0 #不添加网关和子掩码
IPADDR=192.168.10.216
NETMASK=255.255.255.0
[root@Centos7 network-scripts]#systemctl restart network

[root@firewall ~]#sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
[root@firewall ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@firewall ~]#sysctl -p #加载生效
net.ipv4.ip_forward = 1
#此时已经可以ping通了

现在需要配置NAT表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#设置SNAT
专线网络(需要开启ip_forward)
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source
ExtIP
例如:[root@firewall ~]#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! –d 10.0.0.0/24 -j SNAT --to-source 192.168.10.184 #添加此命令后就可以实现互通

拨号网络
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE
例如:[root@firewall ~]#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE #添加此命令后就可以实现ping通外网

#可以查看自己所在的端口的公网地址
[root@firewall ~]#curl http://ipinfo.io/ip/
106.117.126.159
[root@firewall ~]#curl http://ifconfig.me
106.117.126.159
[root@firewall ~]#curl -L http://tool.lu/ip
当前IP: 106.117.126.159
归属地: 中国 河北省 石家庄市

#设置DNAT
iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --to-destination InterSeverIP[:PORT]
例如:iptables -t nat -A PREROUTING -d 192.168.10.184 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.217:80
#此时外网访问就可以通过了(注意外网访问的依旧是公网地址,只不过防火墙通过转换把公网地址转换为了私有地址)

#如果私有地址中http的端口是8080而不是80时,如果管理防火墙的人员不能立即更改时,为了快速解决,可以自己在自己的机器上添加规则,此为REDIRECT 转发
例如:iptables -t nat -A PREROUTING -d 10.0.0.217 -p tcp --dport 80 -j REDIRECT --to-ports 8080
#增加此规则后即可访问

19、搭建一个lamp 网站

lamp:表示linux apache mysql php

(网上有开源的PHP项目,可以直接在网上下载一个wordpress)

20、mysqldump备份还原实战案例

21、mysql的高可用实现MHA实战案例(99.9%,基于主从复制)

22、mysql的高可用,实战案例:Percona XtraDB Cluster(金融级99.999%,不需要主从复制,实现多主读写)

23、实现将多个机器的日志都存储到一台mysql数据库中

1.1、实现步骤

①利用网络日志功能将所有机器的日志数据传输到一台机器上

②利用rsyslog日志服务,将收集的日志记录与mysql数据库中

1.2、环境准备

1
2
3
4
三台主机
一台:正常机器(客户端),IP10.0.0.184
一台:rsyslog日志服务器,IP10.0.0.185
一台:mysql数据库服务器,IP10.0.0.186

1.3、实现步骤

1.3.1、利用网络日志功能将10.0.0.184上的日志数据传输到10.0.0.185上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#在日志服务器上打开接受其他机器的远程端口
[root@rsyslog ~]#vim /etc/rsyslog.conf
## MODULES ####
...省略...
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once #局域网内一般使用UDP
input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once #跨局域网一般使用TCP
input(type="imtcp" port="514")
:wq
[root@rsyslog ~]#systemctl restart rsyslog #重新启动服务
[root@rsyslog ~]#ss -ntlu #可看见UDP和TCP的514端口已开启
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:*
udp UNCONN 0 0 [::1]:323 [::]:*
udp UNCONN 0 0 [::]:514 [::]:*
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:*
tcp LISTEN 0 25 [::]:514 [::]:*

#在客户端将日志发送到远程的TCP、UDP的日志服务器
[root@Rocky ~]#vim /etc/rsyslog.conf #表示将所有日志级别在info及以上的都远程复制到10.0.0.185
*.info @@10.0.0.185:514 #@@表示TCP
*.info @10.0.0.185:514 #@表示UDP
:wq
[root@Rocky ~]#systemctl restart rsyslog

#此时10.0.0.185就可以看到10.0.0.184的日志了
#用一台机器远程登录10.0.0.184,此时10.0.0.185就可以记录到登录信息
[root@Centos7 ~]#ssh 10.0.0.184
[root@rsyslog ~]#cat /var/log/secure #可以看到远程登录信息
Nov 5 10:23:01 Rocky sshd[1908]: Accepted password for root from 10.0.0.216 port 37884 ssh2
Nov 5 10:23:01 Rocky sshd[1908]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov 5 10:23:01 Rocky sshd[1908]: Accepted password for root from 10.0.0.216 port 37884 ssh2
Nov 5 10:23:01 Rocky sshd[1908]: pam_unix(sshd:session): session opened for user root by (uid=0)
1.3.2、利用rsyslog日志服务,将收集的日志记录与mysql数据库中
1.3.2.1、在rsyslog服务器上安装连接mysql模块相关的程序包
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@rsyslog ~]#yum -y install rsyslog-mysql
[root@rsyslog ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/09
/usr/lib/.build-id/09/927b14f8ca6dfdeca2c2bbe1369b56e6470382
/usr/lib64/rsyslog/ommysql.so #此模块是用来连接数据库的
/usr/share/doc/rsyslog/mysql-createDB.sql #一个脚本,是在数据库里用的

[root@rsyslog ~]#cat /usr/share/doc/rsyslog/mysql-createDB.sql
CREATE DATABASE Syslog; #创建数据库syslog

#将sql脚本复制到数据库服库上
[root@rsyslog ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.186:
1.3.2.2、准备mysql-server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@mysql ~]#yum -y install mysql-server
[root@mysql ~]#systemctl enable --now mysqld
[root@mysql ~]#mysql
mysql> create user rsyslog@'10.0.0.%' identified by '123456';
mysql> grant all on Syslog.* to rsyslog@'10.0.0.%';
mysql> source /root/mysql-createDB.sql

#查看Syslog数据库已创建
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| Syslog |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

#数据库里的表也创建完成
mysql> use Syslog
mysql> show tables;
+------------------------+
| Tables_in_Syslog |
+------------------------+
| SystemEvents |
| SystemEventsProperties |
+------------------------+

#但此时两个表里没有内容
1.3.2.3、配置日志服务器将日志发送至指定数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#配置rsyslog将日志保存到mysql中
[root@rsyslog ~]#vim /etc/rsyslog.conf
####MODULES####
#在 MODULES 语言下面,如果是 CentOS 8 加下面行
module(load="ommysql")
#在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
$ModLoad ommysql

#在RULES语句块加下面行的格式
*.info :ommysql:10.0.0.186,Syslog,rsyslog,123456
# 模块名 数据库ip 数据库 用户 密码
:wq

[root@rsyslog ~]#systemctl restart rsyslog
1.3.2.4、测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#客户端生成日志文件
[root@Rocky ~]#logger " I am zhang "

#在数据库上可以查询到上面的测试日志
mysql> select * from SystemEvents\G
*************************** 9. row ***************************
ID: 9
CustomerID: NULL
ReceivedAt: 2022-11-05 11:09:07
DeviceReportedTime: 2022-11-05 11:09:07
Facility: 1
Priority: 5
FromHost: Rocky
Message: I am zhang
NTSeverity: NULL
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root[1968]:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL

#可以使用模糊搜索,直接找到具体位置
mysql> select * from SystemEvents where Message like '%am%'\G

24、redis的编译安装

Redis 源码包官方下载链接:

1
http://download.redis.io/releases/

官方的安装方法:

1
https://redis.io/download

1.1、编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#如果支持systemd需要安装下面包
[root@Rocky ~]#yum -y install gcc jemalloc-devel systemd-devel
[root@ubuntu2004 ~]#apt -y install make gcc libjemalloc-dev libsystemd-dev

#下载源码
[root@Rocky ~]#wget http://download.redis.io/releases/redis-6.2.4.tar.gz
[root@Rocky ~]#tar xf redis-6.2.7.tar.gz
[root@Rocky ~]#ls
anaconda-ks.cfg redis-6.2.7 redis-6.2.7.tar.gz

#编译安装
[root@Rocky ~]#cd redis-6.2.7
[root@Rocky redis-6.2.7]#mkdir /apps/redis -p #创建软件安装路径
[root@Rocky redis-6.2.7]#make -j 2 USE_SYSTEMD=yes PREFIX=/apps/redis install
[root@Rocky redis-6.2.7]#tree /apps/redis #查看已经编译生成文件了
/apps/redis
└── bin
├── redis-benchmark
├── redis-check-aof -> redis-server
├── redis-check-rdb -> redis-server
├── redis-cli
├── redis-sentinel -> redis-server
└── redis-server

#配置环境变量(为了访问时不用输入路径)
[root@Rocky redis-6.2.7]#echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
[root@Rocky redis-6.2.7]#. /etc/profile.d/redis.sh

#准备相关目录和配置文件
[root@Rocky redis-6.2.7]#mkdir /apps/redis/{etc,log,data,run}
[root@Rocky redis-6.2.7]#cp redis.conf /apps/redis/etc/
#此时就可以启动程序了

#但此时启动会有两个报警提示(不影响操作)
# WARNING(报警): The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
#WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[root@Rocky redis-6.2.7]#vim /etc/sysctl.conf
net.core.somaxconn = 511
vm.overcommit_memory = 1
:wq
[root@Rocky redis-6.2.7]#sysctl -p #重新加载生效
net.core.somaxconn = 511
vm.overcommit_memory = 1

#此时输入命令redis-server /apps/redis/etc/redis.conf就可以启动,但此时是前台运行

1.2、创建Redis用户和设置数据目录权限

1
2
3
4
5
[root@Rocky redis-6.2.7]#useradd -s /sbin/nologin -r redis
#s:指定用户登入后所使用的shell类型 r:建立系统帐号

#设置目录权限
[root@Rocky redis-6.2.7]#chown -R redis.redis /apps/redis/

1.3、创建Redis服务Service文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@Rocky redis-6.2.7]#vim /lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised
systemd
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify #如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
LimitNOFILE=1000000   #指定此值才支持更大的maxclients值

[Install]
WantedBy=multi-user.target
:wq
[root@Rocky redis-6.2.7]#systemctl enable --now redis

#此时就可以后台运行了,但此时仍不能远程连接,
[root@Rocky ~]#vim /apps/redis/etc/redis.conf
bind 0.0.0.0 -::1 #将127.0.0.1改为0.0.0.0
# requirepass foobared #在此行下添加程序密码
requirepass 123456
# Note that you must specify a directory here, not a file name.
dir ./apps/redis/data/ #将数据存放位置改为/apps/redis/data/
# output for logging but daemonize, logs will be sent to /dev/null
logfile "/apps/redis/log/redis-6379.log"
# and should be used instead.
pidfile /apps/redis/run/redis_6379.pid #将/var/run/redis_6379.pid路径改为/apps/redis/run/redis_6379.pid
:wq
[root@Rocky ~]#systemctl restart redis
[root@Rocky ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:6379 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::1]:6379 [::]:*
LISTEN 0 128 *:80 *:*

1.4、持久化

Redis支持两种数据持久化保存方法:RDB和AOF两种方法

1.4.1、实现RDB的方法

①save: 同步,不推荐使用,使用主进程完成快照,因此会阻赛其它命令执行

②bgsave: 异步后台执行,不影响其它命令的执行,会开启独立的子进程,因此不会阻赛其它命令执行

③配置文件实现自动保存: 在配置文件中制定规则,自动执行bgsave

注意:RDB是以快照的形式自动备份(满足条件的情况下)

1
2
3
4
5
[root@Rocky ~]#redis-cli -a 123456
127.0.0.1:6379> config get save
1) "save"
2) "3600 1 300 100 60 10000"
#3600秒发生过1次数据变化或者300秒发生过100次数据变化或者60秒发生过10000次变化,就进行快照备份
1.4.2、实现AOF的方法

①在第一次启用AOF功能时,会做一次完全备份,后续将执行增量性备份,相当于完全数据备份+增量变化

②如果同时启用RDB和AOF,进行恢复时,默认AOF文件优先级高于RDB文件,即会使用AOF文件进行恢复

③在第一次开启AOF功能时,会自动备份所有数据到AOF文件中,后续只会记录数据的更新指令

注意: AOF模式默认是关闭的,第一次开启AOF后,并重启服务生效后,会因为AOF的优先级高于RDB,而AOF默认没有数据文件存在,从而导致所有数据丢失

1.4.2.1、在没有数据的情况下开启AOF
1
2
3
4
5
#直接修改配置文件
[root@Rocky ~]#vim /apps/redis/etc/redis.conf
appendonly yes #将no改为yes
:wq
[root@Rocky ~]#systemctl restart redis
1.4.2.2、在有RDB数据的情况下
1
2
3
4
5
6
#首先临时启动AOF
[root@Rocky ~]#redis-cli -a 123456
127.0.0.1:6379> config set appendonly yes  #自动触发AOF重写,会自动备份所有数据到AOF文件
#等数据备份完成后,在更改配置文件
[root@Rocky ~]#vim /apps/redis/etc/redis.conf
appendonly yes #将no改为yes

25、redis实现主从复制

①Redis Server 默认为 master节点,如果要配置为从节点,需要指定master服务器的IP,端口及连接密码

②在从节点执行 REPLICAOF MASTER_IP PORT 指令可以启用主从同步复制功能,早期版本使用 SLAVEOF

指令

#以下操作均在从节点操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@Rocky ~]#redis-cli -a 123456
127.0.0.1:6379> REPLICAOF MASTER_IP PORT #新版推荐使用
127.0.0.1:6379> SLAVEOF MasterIP Port   #旧版使用,将被淘汰
127.0.0.1:6379> CONFIG SET masterauth <masterpass>

例如:
[root@Rocky ~]#redis-cli -a 123456
127.0.0.1:6379> replicaof 10.0.0.184 6379 #将此机设置为10.0.0.184(主服务器)的从服务器
127.0.0.1:6379> config set masterauth 123456 #必须指定主服务器的登录密码

#为了永久生效,需更改配置文件
[root@Rocky ~]#vim /apps/redis/etc/redis.conf
# replicaof <masterip> <masterport>
replicaof 10.0.0.184 6379
masterauth 123456
:wq

#此时就实现了主从复制

26、实现哨兵(sentinel)架构

image-20221110184631270

环境配置:

1
2
3
master10.0.0.184
slave110.0.0.185
slave210.0.0.216

1.1、先实现主从复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#主节点设置,便于后期转为从节点
[root@master ~]#vim /apps/redis/etc/redis.conf
masterauth 123456
:wq
[root@master ~]#systemctl restart redis

#从节点设置
[root@slave1 ~]#vim /apps/redis/etc/redis.conf
# replicaof <masterip> <masterport>
replicaof 10.0.0.184 6379
masterauth 123456
:wq
[root@slave1 ~]#systemctl restart redis
[root@slave2 ~]#vim /apps/redis/etc/redis.conf
# replicaof <masterip> <masterport>
replicaof 10.0.0.184 6379
masterauth 123456
:wq
[root@slave2 ~]#systemctl restart redis

1.2、编辑哨兵(sentinel)配置

①Sentinel实际上是一个特殊的redis服务器,有些redis指令支持,但很多指令并不支持.默认监听在26379/tcp端口.

②哨兵服务可以和Redis服务器分开部署在不同主机,但为了节约成本一般会部署在一起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#如果是编译安装,在源码目录有sentinel.conf(解压缩文件夹下),复制到安装目录即可,
[root@master ~]#cp redis-6.2.7/sentinel.conf /apps/redis/etc/
[root@master ~]#chown redis. /apps/redis/etc/*
[root@master ~]#ll /apps/redis/etc
total 108
-rw-r--r-- 1 redis redis 93939 Nov 10 19:00 redis.conf
-rw-r--r-- 1 redis redis 13768 Nov 10 19:14 sentinel.conf
[root@master ~]#vim /apps/redis/etc/sentinel.conf
bind 0.0.0.0 #添加此项
daemonize yes #后台运行,将no改为yes
pidfile /apps/redis/run/sentinel.pid
logfile "/apps/redis/log/sentinel.log"
sentinel monitor mymaster 10.0.0.184 6379 2 #将127.0.0.1改为主节点ip地址10.0.0.184
#mymaster是集群的名称,此行指定当前mymaster集群中master服务器的地址和端口
#2为法定人数限制(quorum),即有几个sentinel认为master down了就进行故障转移,一般此值是所有sentinel节点(一般总数是>=3的 奇数,如:3,5,7等)的一半以上的整数值,比如,总数是3,即3/2=1.5,取整为2,是master的ODOWN客观下线的依据
sentinel auth-pass mymaster 123456 #添加此项
#mymaster集群中master的密码,注意此行要在上面行的下面
sentinel down-after-milliseconds mymaster 3000 #将30000毫秒(30秒)改为3秒
#判断mymaster集群中所有节点的主观下线(SDOWN)的时间,此项为优化,可不设置
:wq


[root@slave1 ~]#cp /usr/local/src/redis-6.2.7/sentinel.conf /apps/redis/etc/ #此机器解压到了/usr/local/src/下
[root@slave1 ~]#chown redis. /apps/redis/etc/*
[root@slave1 ~]#ll /apps/redis/etc
total 108
-rw-r--r-- 1 redis redis 93960 Nov 10 18:55 redis.conf
-rw-r--r-- 1 redis redis 13768 Nov 10 19:33 sentinel.conf
[root@slave1 ~]#vim /apps/redis/etc/sentinel.conf
bind 0.0.0.0
daemonize yes
pidfile /apps/redis/run/sentinel.pid
logfile "/apps/redis/log/sentinel.log"
sentinel monitor mymaster 10.0.0.184 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 3000
:wq

[root@slave2 ~]#cp /usr/local/src/redis-6.2.7/sentinel.conf /apps/redis/etc/
[root@slave2 ~]#chown redis. /apps/redis/etc/*
[root@slave2 ~]#ll /apps/redis/etc
total 108
-rw-r--r-- 1 redis redis 93960 Nov 10 18:56 redis.conf
-rw-r--r-- 1 redis redis 13768 Nov 10 19:41 sentinel.conf
[root@slave2 ~]#vim /apps/redis/etc/sentinel.conf
bind 0.0.0.0
daemonize yes
pidfile /apps/redis/run/sentinel.pid
logfile "/apps/redis/log/sentinel.log"
sentinel monitor mymaster 10.0.0.184 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 3000
:wq

1.3、哨兵(sentinel)的启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#由于是编译安装,没有service文件,所以无法systemctl启动
#可以使用以下命令启动,但此命令不能开机启动
[root@master ~]#/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf

#为了开机也能启动,可以自己编辑service文件,在所有节点生成新的service文件
[root@master ~]#vim /lib/systemd/system/redis-sentinel.service
[Unit]
Description=Redis Sentinel
After=network.target

[Service]
ExecStart=/apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
:wq
[root@master ~]#scp /lib/systemd/system/redis-sentinel.service 10.0.0.185:/lib/systemd/system/
[root@master ~]#scp /lib/systemd/system/redis-sentinel.service 10.0.0.216:/lib/systemd/system/
[root@master ~]#systemctl enable --now redis-sentinel.service
[root@slave1 ~]#systemctl enable --now redis-sentinel.service
[root@slave2 ~]#systemctl enable --now redis-sentinel.service

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!