N46期第二十一周作业

第21周作业:


1、搭建一个 redis 哨兵集群

准备环境:

三台Redis服务器, 每个节点都运行哨兵服务

主节点: 10.0.0.81

从节点1:10.0.0.82

从节点2: 10.0.0.83

具体步骤:

一. 先搭建一主两从高可用

1. 主从节点安装redis

yum -y install redis

2. 修改主从节点配置文件

主节点:

bind 0.0.0.0

requirepass redis

masterauth redis

从节点: 从节点配置统一

bind 0.0.0.0

requirepass redis

masterauth redis

replicaof 10.0.0.81 6379

3. 启动redis服务, 验证主从复制

systemctl enable --now redis

主节点查看复制信息

从节点查看复制信息

验证主节点写入数据, 从节点可以同步

二. 搭建哨兵

1. 修改哨兵配置文件, 将修改好的配置文件拷贝到其他两天主机上, 保证三台服务器的哨兵配置相同

sentinel monitor mymaster 10.0.0.81 6379 2

sentinel auth-pass mymaster redis

sentinel down-after-milliseconds mymaster 3000

[root@81 ~]# scp /etc/redis-sentinel.conf 10.0.0.82:/etc

[root@81 ~]# scp /etc/redis-sentinel.conf 10.0.0.83:/etc

2. 三台服务器启动哨兵服务

systemctl enable --now redis-sentinel

查看哨兵配置

 

 3. 模拟主节点10.0.0.81故障, 验证故障切换

systemctl stop redis

从节点1跟踪redis日志

 从节点2跟踪redis日志

2、实现 redis cluster 得部署

 实验环境:

6台redis服务器, 实现三套主从

10.0.0.81
10.0.0.82
10.0.0.83
10.0.0.84
10.0.0.85
10.0.0.86

1. 所有节点安装redis

yum -y install redis

2. 修改配置文件, 每台redis主机保持相同配置

bind 0.0.0.0

masterauth redis

requirepass redis

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-require-full-coverage no

3. 所有节点启动redis服务

systemctl enable --now redis

4. 创建集群

只需在任意cluster节点执行创建集群的命令即可

[20:34:17 root@81 ~]#redis-cli -a redis --cluster create 10.0.0.81:6379 10.0.0.82:6379 10.0.0.83:6379 10.0.0.84:6379 10.0.0.85:6379 10.0.0.86:6379 --cluster-replicas 1

Can I set the above configuration? (type 'yes' to accept): yes

5. 利用-c集群模式操作redis

[21:56:34 root@83 ~]#redis-cli -a redis -h 10.0.0.82 set key2 haha (error) MOVED 4998 10.0.0.81:6379

[21:56:39 root@83 ~]#redis-cli -c -a redis -h 10.0.0.82 set key2 haha OK

 

3、部署一个 tomcat 服务

#!/bin/bash

. /etc/init.d/functions

DIR=`pwd`
JDK_FILE="jdk-8u271-linux-x64.tar.gz"
TOMCAT_FILE="apache-tomcat-8.5.59.tar.gz"
JDK_DIR="/usr/local"
TOMCAT_DIR="/usr/local"

install_jdk(){

if ! [ -f "$DIR/$JDK_FILE" ]; then
action "$JDK_FILE 文件不存在" false
exit;
elif [ -d $JDK_DIR/jdk ]; then
action "JDK 已经安装" false
exit;
else
[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi

tar xvf $DIR/$JDK_FILE -C $JDK_DIR
cd $JDK_DIR && ln -s jdk1.8* jdk

cat > /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=$JDK_DIR/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
EOF

. /etc/profile.d/jdk.sh
java -version && action "JDK 安装完成" || { action "JDK 安装失败" false ; exit; }
}

install_tomcat(){

if ! [ -f "$DIR/$TOMCAT_FILE" ];then
action "$TOMCAT_FILE 文件不存在" false
exit;
elif [ -d $TOMCAT_DIR/tomcat ];then
action "TOMCAT 已经安装" false
exit;
else
[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR
fi

tar xvf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR
cd $TOMCAT_DIR && ln -s apache-tomcat-* tomcat
echo "PATH=$TOMCAT_DIR/tomcat/bin:"'$PATH' > /etc/profile.d/tomcat.sh
id tomcat &> /dev/null || useradd -r -s /sbin/nologin tomcat


cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf <<EOF
JAVA_HOME=$JDK_DIR/jdk
EOF

chown -R tomcat.tomcat ${TOMCAT_DIR}/tomcat/

cat > /lib/systemd/system/tomcat.service <<EOF

[Unit]
Description=Tomcat
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf
ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh
ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now tomcat.service
systemctl is-active tomcat.service &> /dev/null && action "TOMCAT 安装完成" || { action "TOMCAT 安装失败" false; exit; }
}

install_jdk
install_tomcat


原文地址:https://www.cnblogs.com/davidwang1970/p/13879449.html