N46期第二十一週做業

第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


相關文章
相關標籤/搜索