m0_75124167 2025-08-15 11:00 采纳率: 0%
浏览 8

关于#redis#的问题:Tomcat和Redis两台机器都在主备完整的配置步骤

Tomcat和Redis两台机器都在主备完整的配置步骤
两个怎么配置连接在一起

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-08-15 11:01
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    在使用 TomcatRedis 的场景中,如果两台机器(即 Tomcat 服务器和 Redis 服务器)都采用 主备架构,那么需要确保它们之间的连接是高可用、稳定且安全的。以下是详细的配置步骤,包括如何将 Tomcat 与 Redis 主备节点连接在一起。


    一、环境准备

    1. Tomcat 服务器

      • 确保已安装 JDK、Tomcat。
      • 配置好应用(如 Spring Boot、Spring MVC 等),并支持 Redis 连接。
    2. Redis 服务器

      • 安装 Redis,并配置主从复制。
      • 配置哨兵(Sentinel)或集群(Cluster)实现高可用。
    3. 网络互通

      • 确保 Tomcat 与 Redis 主备节点之间可以互相通信(开放端口如 6379)。
      • 建议使用内网 IP 或域名解析。

    二、Redis 主备配置(主从 + 哨兵)

    1. Redis 主节点配置

    # 修改 redis.conf
    port 6379
    daemonize yes
    pidfile /var/run/redis.pid
    loglevel warning
    logfile "/var/log/redis/redis-server.log"
    dir /var/lib/redis
    

    2. Redis 从节点配置

    # 修改 redis.conf
    port 6380
    daemonize yes
    slaveof <master_ip> 6379
    

    3. 启动 Redis 实例

    redis-server /etc/redis/redis.conf
    

    4. 配置 Redis 哨兵(Sentinel)

    创建 sentinel.conf

    port 26379
    dir /tmp
    sentinel monitor mymaster <master_ip> 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 60000
    sentinel client-reconfig-script mymaster /path/to/reconfigure.sh
    

    启动哨兵:

    redis-sentinel /etc/redis/sentinel.conf
    

    三、Tomcat 与 Redis 主备连接配置

    1. 使用 Jedis 或 Lettuce 客户端连接 Redis

    示例:使用 Jedis 连接 Redis 哨兵

    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.JedisSentinelPool;
    
    public class RedisConnection {
        public static void main(String[] args) {
            // 哨兵节点列表
            Set<String> sentinels = new HashSet<>();
            sentinels.add("redis-sentinel-1:26379");
            sentinels.add("redis-sentinel-2:26379");
    
            // 创建连接池
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, poolConfig);
    
            try (Jedis jedis = pool.getResource()) {
                String value = jedis.get("testKey");
                System.out.println("Value from Redis: " + value);
            }
        }
    }
    

    2. 配置 Spring Boot 应用连接 Redis 哨兵

    application.properties 中添加:

    spring.redis.sentinel.master=mymaster
    spring.redis.sentinel.nodes=redis-sentinel-1:26379,redis-sentinel-2:26379
    

    或者在 application.yml 中:

    spring:
      redis:
        sentinel:
          master: mymaster
          nodes:
            - redis-sentinel-1:26379
            - redis-sentinel-2:26379
    

    四、验证连接是否正常

    1. 在 Tomcat 应用中执行 Redis 操作(如 SET/GET)。
    2. 模拟 Redis 主节点宕机,观察应用是否能自动切换到从节点。
    3. 使用 redis-cli 检查哨兵状态:
      redis-cli -p 26379
      SENTINEL masters
      

    五、注意事项

    • 防火墙设置:确保 Redis 的 6379 和哨兵的 26379 端口在防火墙中开放。
    • 密码保护:建议为 Redis 设置密码(requirepass),并在客户端配置认证。
    • 日志监控:定期检查 Redis 和 Tomcat 日志,及时发现连接异常。
    • 超时配置:合理设置连接超时时间,避免因网络波动导致应用阻塞。

    六、总结

    Tomcat 与 Redis 主备连接的核心步骤如下:

    1. 配置 Redis 主从和哨兵,确保高可用性。
    2. 在 Tomcat 应用中使用 Jedis 或 Lettuce 客户端,通过哨兵连接 Redis。
    3. 测试连接稳定性,确保故障转移正常工作。
    4. 优化网络、权限、超时等配置,提升系统健壮性。

    如有具体代码或配置问题,可提供更多信息,我可以帮助你进一步调试和优化。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月15日