Linux是基于Unix的。Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机,诞生于1991年10 月5 日。是由芬兰赫尔辛基大学学生Linus Torvalds和后来加入的众多爱好者共同开发完成。
Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds(林纳斯·托瓦兹)由于自己不满意教学中使用的MINIX操作系统, 所以在1991年底由于个人爱好设计出了LINUX系统核心。后来发布于芬兰最大的ftp服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来,之后Linux在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统
服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;
嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,
高性能运算、计算密集型应用Linux有强大的运算能力。
桌面应用系统
移动手持系统
Linux的版本分为两种:内核版本和发行版本;内核版本是指在Linus领导下的内核小组开发维护的系统内核的版本号
Linux的主流版本
ip addr 查看当前linux的ip地址
桥接模式
桥接模式是指与物理机(安装了VMware的电脑),使用同一个物理网卡,和物理主机使用同一个段的ip
NAT(地址转换模式)
在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信
仅主机模式
仅主机模式是出于安全考虑,将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的
ls(list)是一个非常有用的命令,用来显示当前目录下的内容。配合参数的使用,能以不同的方式显示目录内容
格式:ls[参数] [路径或文件名]
常用:在linux中以 . 开头的文件都是隐藏的文件
当我们输了多次命令后屏幕就被占满了,如果我们还要输入其他命令就要往下拖动窗口,可以使用清屏命令让窗口自动往下滚一屏
清屏除了可以使用clear命令还可以使用ctrl+l快捷键
linux中的切换目录命令和windows中的命令一样也是使用cd
案例:使用cd切换到root帐号的home目录
cd命令其他用法:
切换到上一层目录cd /
切换到系统根目录cd ~
pwd命令是用来查看当前目录的路径
mkdir(make directory)命令可用来创建目录
语法:mkdir 目录名称 mkdir app app1 aap2
案例:在root根目录下创建woniu目录
注意:mkdir一次只能创建一个目录或同级多个目录
mkdir -p app/app1/app2
创建多级目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWz1KF1V-1691065188988)(assets\image-20210831150352690.png)]
rmdir(remove directory)命令可用来删除“空”的目录
案例:删除root根目录中的woniu目录
语法: touch a.txt
案例:在woniu目录中创建文件hello.txt
cp a.txt ./app1 将a.txt复制到app1目录中
cp a.txt b.txt 将a.txt复制为b.txt文件
cp a.txt ../ 将a.txt文件复制到上一层目录中
cp a.txt ../app1/b.txt 将a.txt 拷贝到app1下改为b.txt
除了可以将文件直接复制外,还可以在复制文件时修改文件的名称
案例:将install.log拷贝到microboom目录中并改名为linux.txt
mv 移动或者重命名
mv a.txt ../ 将a.txt文件移动到上一层目录中
mv a.txt b.txt 将a.txt文件重命名为b.txt
mv a.txt ../b.txt 将a.txt文件移动到上一层目录中后文件名修改成b.txt
用法: rm [选项]... 文件...
rm a.txt 删除a.txt文件
删除需要用户确认,y/n
rm 删除不询问
rm -f a.txt 不询问,直接删除rm 删除目录
rm -r a 递归删除,询问递归删除
rm -rf a 不询问递归删除
rm -rf * 删除所有文件(慎用)
rm -rf /* 自杀(慎用)
cat用于显示文件的内容,格式:cat[参数]<文件名>
案例:显示world.txt文件的内容
more一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。回车显示下一行内容。
案例:显示hello.txt文件的内容
less用法和more类似,不同的是less可以通过PgUp、PgDn键来控制
用法同上
tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
用法:
tail -10 /etc/passwd 查看后10行数据
tail -f catalina.log 动态查看日志(*****)
ctrl+c 结束查看
案例:显示hello.txt文件后1行的内容
案例:动态显示world.txt的内容
使用了-f后光标一直在等待而不会结束,当install.log文件发生变化时会直接将变化的内容显示。
修改world.txt的内容
自动显示已更新内容
vi编辑器是所有Unix及[Linux](http://www.2cto.com/os/linux/)系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。
vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计; 因为程序简单,编辑速度相当快速。 vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。
vim的用法和vi一样。vim需要安装
vim安装命令:
yum -y install vim*
在Linux下一般使用vi编辑器来编辑文件。vi既可以查看文件也可以编辑文件。三种模式:命令行、插入、底行模式。
vim和vi
案例:使用vim编辑器修改app/world.txt文件
使用vi打开world.txt,vim界面如下:
使用vi
在vi中按i键切换到插入模式编写内容
切换到插入模式:按 i 、o、a键;
i 在当前位置前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
使用插入模式编写内容:
输入完成后需要切换回命令模式对文件进行保存
切换到命令行模式:在vi中按Esc键;
切换到底行模式:按 :(冒号)
:wq保存并退出
:q!不保存退出
ps命令是用来管理linux系统中的进程。
ps 正在运行的某个进程的状态
ps –ef 查看所有进程
ps –ef | grep redis 查找某一进程
kill 2868 杀掉2868编号的进程
kill -9 2868 强制杀死进程
案例:搜索名为hald的进程
hald进程是linux的系统进程,用来加载计算机硬件的驱动。
案例:强制杀死编号为5821的进程
修改ip前需要知道自己的网卡名称是什么
通过查看ip命令得知网卡名称为ens33
修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改如下内容
bootproto=static
在最后加上几行,IP地址、子网掩码、网关、dns服务器
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.2 #在vm中网关地址是2
DNS1=192.168.1.2
DNS2=192.168.1.2
重启网络服务
systemctl restart network
测试外网
ping www.baidu.com
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。
常用参数:
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件
打包:
tar –cvf xxx.tar 要打包的文件
打包并且压缩:
tar –zcvf xxx.tar.gz 要压缩的文件
案例:将app目录打包
案例:将microboom目录打包并压缩
解压
tar –xvf xxx.tar 解压到当前目录中
tar -zxvf xxx.tar.gz -C /usr/aaa 解压到user/aaa目录中
案例:将app.tar.gz解压到woniu目录
-C表示要将解压结果存放到哪个目录中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQ8KUZAB-1691065188995)(/assets/image-20210831172347184.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-thFq5TrI-1691065188995)(/assets/1558404421952.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgnplruT-1691065188995)(/assets/image-20210831172440578.png)]
通过上图可以看出linux中的权限由四个部分一共10个字符组成
chmod 变更文件或目录的权限。
示例:
chmod 755 a.txt
chmod u=rwx,g=rx,o=rx a.txt
案例:将文件world.txt的权限修改为只读
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DqiwwjPX-1691065188995)(/assets/image-20210831173328911.png)]
使用vi编辑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxoR37Xh-1691065188996)(/assets/image-20210831173428234.png)]
rpm -qa|grep mysql
如果mysql的版本不是想要的版本。需要把mysql卸载
[root@localhost ~]# yum remove mysql mysql-server mysql-libs mysql-common
[root@localhost ~]# rm -rf /var/lib/mysql
[root@localhost ~]# rm /etc/my.cnf
安装yum源
yum localinstall mysql80-community-release-el7-7.noarch.rpm
安装mysql
yum -y install mysql-community-server
systemctl start mysqld.service
当安装一个服务软件时,默认是把服务启动文件放在 /etc/init.d/里面,新版mysql在该目录中没有启动文件
systemctl start mysqld.service 启动mysql
systemctl restart mysqld.service 重启mysql
systemctl status mysqld.service 查看msyql状态
systemctl stop mysqld.service 停止mysql
mysqld为mysql默认的服务名称。在linux中mysql的配置文件在/etc/my.cnf 中
cat /var/log/mysqld.log | grep password
mysql -uroot -p
使用随机密码登录到msyql后输入mysql的修入密码命令
//1、先按mysql密码策略修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root_123R';
//修改mysql密码复杂性策略
set global validate_password.policy=0;
//设置最低密码长度为1
set global validate_password.length=1;
//再将密码修改为自己想要的
alter user 'root'@'localhost' identified by '123456';
//1、进入到mysql数据库,
use mysql;
//2修改该库下user表的host列
update user set host='%' where user='root';
//3、执行两次下面的命令
grant all privileges on test.* to 'root'@'%';
//4、刷新数据库配置
flush privileges;
//临时关闭防火墙,系统重启后无效
systemctl stop firewalld.service
如果使用mysql客户端连接linux上的mysql可能会报如下错误,该错误是因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
解决步骤:
//进入到mysql数据库
use mysql;
//更改加密方式
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//刷新数据库配置
flush privileges;
在linux中软件一般安装到/usr/local目录中
解压命令:
tar -zxvf jdk-8u301-linux-x64.tar.gz
将解压后的jdk改名为jdk8
mv jdk1.8.0_301 jdk8
注意JAVA_HOME换成自己的地址
使用vi打开/etc/profile
在末尾行添加
#set java environment
JAVA_HOME=/ding/jdk1.8
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出
重新加载环境变量
source /etc/profile
查看jdk版本
java -version
我的nginx 文件目录是/etc/nginx 用文件方式启动 ./nginx -c /etc/nginx/nginx.conf
-- 升级yum
yum update
-- 安装nginx源
yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
-- 安装nginx
yum install nginx
--查看版本号进入到/usr/sbin
./nginx -v
--启动
./nginx -c /etc/nginx/nginx.conf
--关闭
./nginx -s stop
--重加载命令 (不是重启,修改文件后,文件重新加载)
./nginx -s reload
1:安装wget 环境
yum -y install wget
2:上传redis 压缩包
3:执行命令
yum install gcc
#yum install make
#yum -y install centos-release-scl
#yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#scl enable devtoolset-9 bash
4: 进入redis 根目录执行make
5: 启动redis(进入redis 目录里的src 中执行下面命令)
./redis-server ../redis.conf
redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。
redis提供两种持久化方式:
RDB:快照,通过从服务器保存和持久化
AOF:日志,操作生成相关日志,并通过日志来恢复数据。couchDB对于数据内容,不修改,只追加,则文件本身就是日志,不会丢失数据.
注意:redis默认开启了RDB持久化
firewall-cmd --query-port=6379/tcp
如果返回no则端口没有开启,yes代表开启
firewall-cmd --add-port=6379/tcp --permanent
查看防火墙状态
systemctl status firewalld
暂时关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
使用redis.conf 文件启动
修改内存大小 配置文件设置maxmemory 1024mb 或者在客户端config set maxmemory 800mb
修改redis 淘汰策略 配置文件设置maxmemory-policy XXX 默认的策略是内存满了所有申请内存的指令都会报错
进入redis-cli
执行:save #有redis主线程同步执行RDB,会阻塞所有命令
bgsave #开启子线程异步执行RDB,避免主线程受影响
redis 停机自动执行一次RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里,Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
注:fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程,在每次redis服务器启动的时候,会自动把dump.rdb这个文件的键值对 全部读取到内存
步骤一:编辑redis.conf配置文件
RDB快照相关参数:
save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
save 300 10 #必须是300秒之后至少10个关键字发生变化。
save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
上面三个参数屏闭后,rdb方式就关闭了
stop-writes-on-bgsave-error yes #后台存储错误停止写。
rdbcompression yes #使用LZF压缩rdb文件。
rdbchecksum yes #存储和加载rdb文件时校验。
dbfilename dump.rdb #设置rdb文件名。
dir ./ #设置工作目录,rdb文件会写入该目录。
步骤二:重启redis查看数据是否存在
先删除dump.rdb
使用客户端连接并添加数据
杀掉redis进程
pkill -9 redis
启动redis查看数据是否存在
RDB的缺陷:在2个保存点之间断电,将会丢失1-N分钟的数据出于对持久化的更精细要求,redis增添了aof方式 append only file
进入 redis-cli
config set appendonly yes
或者进入redis.conf 修改 appendonly = yes 默认是no
AOF日志原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nE1YR9Nk-1691065188998)(…/…/…/…/…/…/教学资料/第3阶段课程/7.5-自己教案/第三周/02.Redis进阶/文档/assets/image-20210906142933035.png)]
思想:内存每写一条,就备份一条,时间间隔是1秒钟,缺点:文件大,写操作频繁。
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件,redis启动之初会读取该文件(aof文件)重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
aof保存的是appendonly.aof文件
AOF日志相关参数:
appendonly no # 是否打开aof日志功能 no:不开启 yes:开启日志
appendfsync always # 每1个命令,都立即同步到aof. 安全,速度慢
everysec # 折衷方案,每秒写1次
no # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快
no-appendfsync-on-rewrite no # 正在导出rdb快照的过程中,要不要停止同步aof
配置开启AOF日志
配置存储方案
打印日志文件内容
more /usr/local/bin/appendonly.aof
因为没有操作所以没有日志信息
启动redis服务端并启动客户端连接并创建key
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxzgREZO-1691065188998)(…/…/…/…/…/…/教学资料/第3阶段课程/7.5-自己教案/第三周/02.Redis进阶/文档/assets/image-20210906144557189.png)]
查看日志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7mCOEux-1691065188998)(…/…/…/…/…/…/教学资料/第3阶段课程/7.5-自己教案/第三周/02.Redis进阶/文档/assets/image-20210906144620543.png)]
思考:如果对同一个key进行多次操作,在aof日志中怎样表现操作记录,一条还是n条?
案例 :创建age并改变五次值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NYpgtRU2-1691065188998)(…/…/…/…/…/…/教学资料/第3阶段课程/7.5-自己教案/第三周/02.Redis进阶/文档/assets/image-20210906144752864.png)]
日志会将每一步操作都记录,如果要对一个key操作多次,在数据上的表现只有一个但在日志中会有n条记录。当数据丢失需要找回数据的时候怎样找到正确的值?
aof重写是将内存中的key和value逆化为redis命令重新保存到日志中,就好像是将所执行的操作做的总结。
aof重写相关参数:
no-appendfsync-on-rewrite no # 正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写
问: 在dump rdb过程中,aof如果停止同步,会不会丢失?
答: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作.
问: aof重写是指什么?
答: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里.以解决 aof日志过大的问题.
问: 如果rdb文件,和aof文件都存在,优先用谁来恢复数据?
答: aof
问: 2种是否可以同时用?
答: 可以,而且推荐这么做
问: 恢复时rdb和aof哪个恢复的快
答: rdb快,因为其是数据的内存映射,直接载入到内存,而aof是命令,需要逐条执行
问题思考:在使用rdb做持久化时,我们关掉了redis服务,然后重新打开,保存的数据还在。但在做aof的时候我们将redis服务关闭后再打开数据就没有了。在上面不是配置过rdb持久化吗,为什么没起作用?
答:当rdb中有数据,并开启了AOF选项,重启redis服务后会产生一个空的aof文件,当rdb和aof文件都存在,会以aof文件来恢复数据。
官网建议
1)、RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储
2)、AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大
3)、只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.
4)、同时开启两种持久化方式
在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。
5)、性能建议
因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。AOF好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。代价一是带来了持续的IO,二是AOF rewrite是将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。如果不Enable AOF ,仅靠Master-Slave Replication实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。新浪微博就选用了这种架构
三个节点:一个主节点,二个从节点
在虚拟机开启3个redis 实例,来模拟主从集群模式,信息如下:
ip | post | 角色 |
---|---|---|
127.0.0.1 | 7001 | master |
127.0.0.1 | 7002 | slave |
127.0.0.1 | 7003 | slave |
1,在redis 目录下建三个文件夹:
2,把redis.conf 分别复制到三个文件夹中:
cp /redis/redis-6.0.6/redis.conf /redis/7001
cp /redis/redis-6.0.6/redis.conf /redis/7002
cp /redis/redis-6.0.6/redis.conf /redis/7003
3,修改文件中端口,RDB文件存放位子,redis实例声明的IP
例如7001实例:
dir ../../7001
port 7001
4,启动三个服务进入src 目录下
例如启动7001实例:
./redis-server ../../7001/redis.conf
5,连接redis客户端
例如连接7001实例:
./redis-cli -p 7001
通过命令建立主从关系:
例如连接7002客户端,执行命令,便是7002 是7001的从节点
redis-cli -p 7002 快速的打开某个端口的客户端
SLAVEOF 127.0.0.1 7001
进入7001 的客户端输入命令
info replication
主从同步原理
原理:从节点第一次发送请求带上自己的replid 和offset ,主节点判断和自己的replid 是否一致,传给从节点replid 和offset,从节点保存版本信息,主节点执行bgsave 生成RDB 文件,并同步给从节点,从节点加载RDB文件实现数据同步,这时如果主节点发生修改操作,会生成一个repl-baklog 日志。
万一主节点宕机了怎么办?
监控:sentinel不断的检查您的master和slave 是否按预期执行
自动故障恢复:如果master故障,sentinel会将一个slave提升为master,当故障实例恢复后也已新的新的master为主
通知:sentinel充当redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给redis客户端
sentinel服务状态检测,每隔一秒向集群每个实例发送ping 命令
主观下线:如果某个sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线
客观下线:若超过执行数量(quornum)的sentinel都认为该实例下线,则该实例客观下线,(quornum数最好超过实例总数一半)
ip | post | 角色 |
---|---|---|
127.0.0.1 | 27001 | master |
127.0.0.1 | 27002 | slave |
127.0.0.1 | 27003 | slave |
1,在redis 目录下建三个文件夹:
2,新建文件sentinel.conf
以27001为例:
port 27002
sentinel monitor mymaster 127.0.0.1 7001 2
sentinel down-after-milliseconds mymaster 50000
sentinel failover-timeout mymaster 180000
dir "/ding/s1"
3,启动,进入src 目录
redis-sentinel ../../s1/sentinel.conf
查看防火墙状态
systemctl status firewalld.service 绿的running表示防火墙开启
关闭防火墙
systemctl stop firewalld.service
开机禁用防火墙
systemctl disable firewalld.service
启动防火墙
systemctl start firewalld.service
防火墙随系统启动
systemctl enable firewalld.service
在实际的使用中不会将防火墙关闭,而是配置防火墙的放行
contos7的防火墙配置文件为:vi /etc/init.d/firewall
修改/etc/init.d/firewall 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT //开放80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT //开放22端口
配置完成后输入:/etc/init.d/firewall restar 重启防火墙
部署前先将项目所需的数据库添加到linux的mysql中
修改项目pom文件
将打包方式改为jar
在pom中添加springboot插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
plugins>
build>
将项目打包后上传到linux
上传成功后切换到jar包所在的目录,执行:java -jar 项目jar包名称
防火墙
systemctl start firewalld.service
防火墙随系统启动
systemctl enable firewalld.service
在实际的使用中不会将防火墙关闭,而是配置防火墙的放行
contos7的防火墙配置文件为:vi /etc/init.d/firewall
修改/etc/init.d/firewall 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT //开放80端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT //开放22端口
配置完成后输入:/etc/init.d/firewall restar 重启防火墙
部署前先将项目所需的数据库添加到linux的mysql中
修改项目pom文件
将打包方式改为jar
在pom中添加springboot插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-resources-pluginartifactId>
<version>3.0.2version>
plugin>
plugins>
build>
将项目打包后上传到linux
上传成功后切换到jar包所在的目录,执行:java -jar 项目jar包名称