第21周做業:java
一、搭建一個 redis 哨兵集羣node
準備環境:linux
三臺Redis服務器, 每一個節點都運行哨兵服務redis
主節點: 10.0.0.81apache
從節點1:10.0.0.82tomcat
從節點2: 10.0.0.83bash
具體步驟:服務器
一. 先搭建一主兩從高可用ui
1. 主從節點安裝redisspa
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日誌
二、實現 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
三、部署一個 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