• 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


  • 相关阅读:
    python使用Fabric模块实现自动化运维
    sublime 字体设置
    java语言输出Fibonacci数列:1 1 2 3 5 8 13....直到55
    Java-取出字符串中第一个出现且唯一的字母
    java中charAt()方法的使用
    Java indexOf() 方法
    idea查找 enter class name的快捷键
    spring boot配置文件加载位置
    @PropertySource&@ImportResource&@Bean
    @Value获取值和@ConfigurationProperties获取值比较
  • 原文地址:https://www.cnblogs.com/davidwang1970/p/13879449.html
Copyright © 2020-2023  润新知