在我看来
她仿佛代言了这整个世界的秘密
-----《言叶之庭》
目录
防火墙
JDK安装教程
Tomcat安装
Nginx安装
Redis安装
伪分布式集群
Redis测试实验
Redis连接RedisDesktopManage可视化工具
基础命令:centos8安装好后进入,使用xshell远程连接上去。
进去执行命令yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
执行rz上传本地文件,如果无法打开窗口,直接执行:sudo yum install -y lrzsz即可.
执行make编译C语音代码找不到命令,gcc没装好的原因:yum install gcc automake autoconf libtool make
安装vim,yum install vim
删除文件夹:rm -rf …,新建文件夹:mkdir … ,
三种查看进程的方法
ps -ef|grep activemq|grep -v grep,netstat -anp|grep 61616,lsof -i:61616
复制文件并重命名:cp activemq.xml activemq.xml.bk
重命名:mv zookeeper-3.4.14 zookeeper
创建文件:touch zk_batch.sh
查看状态:systemctl status firewalld.service
打开防火墙:systemctl start firewalld.service
关闭防火墙:systemctl stop firewalld.service
开启防火墙:systemctl enable firewalld.service
禁用防火墙:systemctl disable firewalld.service
加端口:firewall-cmd --permanent --zone=public --add-port=8080/tcp
成功添加端口号,然后必须重启防火墙或者虚拟机
firewall-cmd --reload
然后查看是否生效:firewall-cmd --zone=public --query-port=8080/tcp
1.到官网下载一个tar.gz的包,例如jdk-8u161-linux-x64.tar.gz。
2.使用rz命令或者ftp直接复制到/usr/local目录下,如图
接着进行解压缩,执行命令:tar -zxvf jdk-8u161-linux-x64.tar.gz,如图解压完毕
改个名字,mv jdk1.8.0_161/ jdk1.8,如图
3.配置环境变量,vim /etc/profile,配置好:
#jdk环境
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
其中java_home为jdk安装目录,即
4.重新加载配置文件:source /etc/profile
5.然后javac -version,java -version保证两个版本一致
1.压缩包上传至服务器,如
解压缩:tar -zxvf apache-tomcat-9.0.35.tar.gz,解压成功
2.接着让防火墙开启8080端口:firewall-cmd --permanent --zone=public --add-port=8080/tcp
查看是否生效:firewall-cmd --zone=public --query-port=8080/tcp
然后重启防火墙:firewall-cmd --reload
3.进入tomcat的bin目录里:./startup.sh,
4.然后ps -ef | grep tomcat,发现线程已经启动了,到浏览器ip+8080如图成功。
如果发现浏览器无法访问先./shutdown.sh在./startup.sh试试。
1.将压缩包上传至服务器,如图
解压:tar -zxvf nginx-1.18.0.tar.gz,如图成功。
2.进入nginx目录,如图:
执行:./configure --prefix=/usr/local/nginx,即配置nginx并将文件放置到/usr/local/nginx目录内。
如图成功,但此时nginx目录仍看不到,还需make,make install
接着执行:make
然后make install,然后看下nginx目录有了。
3.启动nginx有两种,一种进入nginx的sbin里,执行./nginx即可
另一宗:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
然后ps -ef | grep nginx,如图成功
Nginx体系结构有master进程和其worker进程组成,master进程读取配置文件,并维护worker进程,而worker进程则对请求进行实际处理;
检查nginx配置是否正确:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
浏览器如果仍无法访问看看防火墙是否已开启80端口。
4.两种方式:优雅关闭: kill -QUIT 主pid(当一个请求已经在执行时不会受到影响,但此时已经关闭了,仍会让你把那个请求完成掉)
快速关闭:kill -term 主pid (不管有没有请求,都关闭掉,最后一个请求会中断不可进行)。
当nginx已经启动想要重启时,到sbin下执行 ./nginx -s reload即可。
压缩包上传至服务器并tar -xvf redis-5.0.5.tar.gz解压。
如图解压成功
2.进入redis,执行make install
这个过程是先编译再安装的过程,时间稍长。
如图安装成功
进入src目录启动redis-server启动redis.
如图启动成功,注意默认端口如图为6379,需要在防火墙开启这个端口并重启防火墙。
这里启动了以后,这个控制台就没法用了,需要例外开启一个控制台。
进入src,执行:redis-cli,如图即可使用
步骤:
1.与redis同目录下创建一个文件夹redis-cluster,mkdir redis-cluster,然后进入分别创建8001-8006个文件夹。
防火墙开这6个端口:
如图
2. cp redis-5.0.5/redis.conf redis-cluster/8001 将redis.conf复制到8001里并修改配置,
通过命令 /搜索内容,不要先点insert,去找配置的地方
1)/port 改 8001
2)/bind 改 虚拟机的ip地址,不是本地电脑的IP
记得将下面的127.0.0.1注释掉,否则会默认为下面的端口,不会用你配置的端口。
3)/dir+空格 改为 dir /usr/local/redis-cluster/8001
4)/cluster-e改yes,指的是启动集群模式
5)/cluster-conf
6)设置集群超时时间,比如redis搞了6个实例,其中一个实例挂了,并且超过了此处5s时间则该集群会被踢出去,
7)no 改为yes,表示日志模式开启了。
8)daemonize yes表示后台开启。
至此,一个改好了,另外5个实例同上搭建,但只需复制进去并批量改下端口号即可。
9)例如:进入8001文件夹,cp redis.conf ../8002,依次复制下去。
然后进入8002文件夹修改端口号:
:%s/源字符串/目的字符串/g
10)依次修改完,依次启动redis服务器,
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/8002/redis.conf
11)由于redis集群需要使用ruby命令,所以我们需要安装ruby,因为它的集群模式就是用ruby脚本实现的。
① yum install ruby
② yum install rubygems
③安装redis和ruby的接口,版本与安装redis一致。如果报错,那就换个版本,例如改版本为4.2.0
gem install redis --version 5.0.5
在redis的src目录下有个redis-trib.rb就是ruby的原生脚本。
最后一步最关键的命令,启动集群,进入原生redis的src目录下命令:
Redis脚本有个规定,前面8001-3三台就是主服务器,后面三台就是从,1是指主/从比。如果三主6从,则是0.5。主节点第一台8001对应从节点第一台8004,这也是规定。
启动集群。
./redis-cli --cluster create 192.168.1.200:8001 192.168.1.200:8002 192.168.1.200:8003 192.168.1.200:8004 192.168.1.200:8005 192.168.1.200:8006 --cluster-replicas 1
如果报拒绝连接,看看防火墙是否开启了端口或者虚拟机网络看看。如图成功启动集群。
然后输入yes
连接某一台集群看看
/usr/local/redis/bin/redis-cli -c -h 192.168.1.200 -p 8001, 查看集群状态:cluster info,详尽信息:cluster nodes
内部会做重定向算法,类似于负载均衡。于是name只会保存在8002里。以后用到name会专门重定向到8002里取值。
一主一从唯一的标识。
package com.example.demo.java;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
/**
* @author yangss
* @time 2020/6/13 - 14:12
*/
public class RedisCluster {
public static void main(String[] args) throws IOException {
Set jedisClusterNode = new HashSet();
jedisClusterNode.add(new HostAndPort("192.168.1.200",8001));
jedisClusterNode.add(new HostAndPort("192.168.1.200",8002));
jedisClusterNode.add(new HostAndPort("192.168.1.200",8003));
jedisClusterNode.add(new HostAndPort("192.168.1.200",8004));
jedisClusterNode.add(new HostAndPort("192.168.1.200",8005));
jedisClusterNode.add(new HostAndPort("192.168.1.200",8006));
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(10);
config.setTestOnBorrow(true);
JedisCluster jedisCluster = new JedisCluster(jedisClusterNode, 6000,10,config);
System.out.println(jedisCluster.set("student","arron"));
System.out.println(jedisCluster.set("age","18"));
System.out.println(jedisCluster.get("student"));
System.out.println(jedisCluster.get("age"));
jedisCluster.close();
}
}
后台进入一个8001端口,然后获取get student成功
演示主从切换
例如关掉主节点8001:/usr/local/redis/bin/redis-cli -c -h 192.168.1.200 -p 8001 shutdown,然后ps看下进程关闭成功,目前只剩5台服务器。
进入8002查看cluster nodes状态如下,显示为fail,然后发现8005变成了主,这个有点疑惑为何不是8004。
Redis内部集群数据是分来存储的,如果数据在第一台,那么访问第三台则会自动重定向到第一台。
如上图目前的三台主服务器后的0-5460,5461-10922,10923-16383代表的是存储空间,互相之间的数据没有关系。
Redis集群水平扩展是很复杂的一件事,zookeeper比较方便,自动扩展。Redis底层的分片通讯原理,分片原理这些bat最喜欢问,准备下。
需要设置密码才能连接成功。使用远程工具连接前先杀掉所有redis进程,然后
修改redis文件夹下redis.conf文件,在bind 127.0.0.1行前面加#注释掉这一行
config set requirepass 123
然后连接成功
二篇继续