Kafka、ES、Redis、Mysql等中间件部署到公网

要将 Kafka、Redis、MySQL、Sentinel 和 Elasticsearch (ES) 部署到公网并且配置账号密码进行访问控制,下面是一个具体的步骤和配置示例。每个服务都有自己的安全配置和网络配置方式,我会逐一处理。

1. Kafka 部署到公网并配置账号密码

步骤:

  1. 在云服务器或物理服务器上安装 Kafka。

  2. 配置 listenersadvertised.listeners,使 Kafka 能够通过公网访问。

  3. 配置 Kafka 的认证和授权,使用 SASL 或 SSL 来控制连接。

配置示例(server.properties):

# 启用监听器
listeners=SASL_PLAINTEXT://0.0.0.0:9092
advertised.listeners=SASL_PLAINTEXT://<Your_Public_IP>:9092

# 配置 SASL 认证
listener.security.protocol.map=SASL_PLAINTEXT:SASL_PLAINTEXT
listeners=SASL_PLAINTEXT://0.0.0.0:9092

# 配置 SASL 机制
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

# 启用认证
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin

# Kafka 默认安全设置
inter.broker.listener.name=SASL_PLAINTEXT

配置完后,需要设置账号密码,通常 Kafka 的认证通过 JAAS 文件来完成。

kafka_server_jaas.conf

KafkaServer {
   org.apache.kafka.common.security.plain.PlainLoginModule required
   username="admin"
   password="admin_password"
   user_admin="admin_password"
   user_user="user_password";
};

然后在 Kafka 启动时指定 JAAS 配置文件:

KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf" kafka-server-start.sh /path/to/server.properties

2. Redis 部署到公网并配置账号密码

步骤:

  1. 安装 Redis。

  2. 配置 bindrequirepass 以限制公共访问。

配置示例(redis.conf):

# 绑定到所有网络接口,使其能够通过公网访问
bind 0.0.0.0

# 启用密码保护
requirepass your_password_here

# 设置最大连接数限制
maxclients 10000

重新启动 Redis,使配置生效。

3. MySQL 部署到公网并配置账号密码

步骤:

  1. 安装 MySQL。

  2. 配置 MySQL 使其监听公网 IP。

  3. 配置用户和权限,确保只有具有特定账号的用户能够连接。

配置示例(my.cnf):

[mysqld]
bind-address = 0.0.0.0   # 允许从所有 IP 访问

创建用户并配置权限:

CREATE USER 'username'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Sentinel 部署到公网并配置账号密码

步骤:

  1. 安装 Sentinel 并启动它。

  2. 配置 bindrequirepass,使其支持公网访问。

配置示例(sentinel.conf):

# 绑定到所有网络接口
bind 0.0.0.0

# 设置密码
requirepass your_password_here

# 设置监控的主 Redis 节点
sentinel monitor mymaster <Redis_IP> 6379 2

5. Elasticsearch 部署到公网并配置账号密码

步骤:

  1. 安装 Elasticsearch。

  2. 配置 network.host 使其监听公网 IP。

  3. 配置用户名和密码(推荐使用 X-Pack 或其他安全插件来实现认证和授权)。

配置示例(elasticsearch.yml):

network.host: 0.0.0.0  # 允许来自所有 IP 的连接
http.port: 9200

# 启用安全认证 (X-Pack)
xpack.security.enabled: true
xpack.security.authc.realms.file.file1.type: file
xpack.security.authc.realms.file.file1.order: 0

配置 Elasticsearch 用户:

bin/elasticsearch-users useradd <username> -p <password> -r superuser

6. 防火墙和安全设置

为了确保这些服务可以通过公网访问,还需要配置防火墙规则:

  • Kafka:需要在防火墙中开放 9092 端口。

  • Redis:需要开放 6379 端口。

  • MySQL:需要开放 3306 端口。

  • Sentinel:需要开放 Sentinel 默认端口 26379。

  • Elasticsearch:需要开放 9200 端口。

确保只允许特定的 IP 地址进行访问,以增加安全性。

例如,在防火墙中开启特定端口:

# 开启 Redis 端口
sudo ufw allow from <Allowed_IP> to any port 6379

# 开启 Kafka 端口
sudo ufw allow from <Allowed_IP> to any port 9092

# 开启 MySQL 端口
sudo ufw allow from <Allowed_IP> to any port 3306

7. 测试和验证

  • 使用 Telnet 或其他客户端工具测试是否能够从外部访问 Kafka、Redis、MySQL、Sentinel 和 Elasticsearch。

  • 确认账号密码认证是否生效,只有通过身份验证的用户才能连接。

8. 注意事项

  • 为了提高安全性,建议使用 VPN 或基于 IP 的访问控制来限制只有可信主机能够访问。

  • 定期更新密码和配置,并启用 SSL/TLS 加密连接来保护数据传输安全。

这样,Kafka、Redis、MySQL、Sentinel 和 Elasticsearch 都可以配置为通过公网访问,并且通过配置账号密码进行访问控制。

可以使用 Docker Compose 部署 KafkaElasticsearchRedisMySQL MongoDB,并实现持久化。以下是一个示例的 Docker Compose 配置文件: ```yaml version: '3' services: zookeeper: image: confluentinc/cp-zookeeper:6.2.0 container_name: zookeeper ports: - 2181:2181 volumes: - zookeeper-data:/var/lib/zookeeper/data - zookeeper-logs:/var/lib/zookeeper/logs kafka: image: confluentinc/cp-kafka:6.2.0 container_name: kafka depends_on: - zookeeper ports: - 9092:9092 environment: - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 volumes: - kafka-data:/var/lib/kafka/data elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data environment: - discovery.type=single-node redis: image: redis:6.2.5 container_name: redis ports: - 6379:6379 volumes: - redis-data:/data mysql: image: mysql:8.0.26 container_name: mysql ports: - 3306:3306 volumes: - mysql-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=your_root_password mongo: image: mongo:5.0.2 container_name: mongo ports: - 27017:27017 volumes: - mongo-data:/data/db volumes: zookeeper-data: driver: local zookeeper-logs: driver: local kafka-data: driver: local esdata: driver: local redis-data: driver: local mysql-data: driver: local mongo-data: driver: local ``` 这个示例配置文件中包含了 ZooKeeper、KafkaElasticsearchRedisMySQL MongoDB 的部署配置。通过挂载相应的卷,实现了持久化。 使用以下命令启动所有的服务: ```shell docker-compose up -d ``` 这将启动所有的容器,并将它们分别绑定到主机的相应端口。你可以根据需要修改端口映射。 请注意,这只是一个简单的示例配置文件,你可以根据自己的需求进行修改扩展。同时,还可以根据需要配置其他 KafkaElasticsearchRedisMySQL MongoDB 相关的环境变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值