我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述基于ansible在远程centos服务器docker环境安装kafka相关的知识,希望能为你提供帮助。
本文档主要介绍如何使用ansible在远程centos服务器docker环境快速安装kafka,目标服务器为一台本地虚拟机,安装操作系统为官方的Centos7.9-64,语言环境选择简体中文,安装类型选择最小化安装,不预装任何软件。
我们选择的kafka镜像为ubuntu/zookeeper:3.1-22.04_edge,配套的zookeeper镜像为ubuntu/zookeeper:3.1-22.04_edge,为了管理kafka方便,我们部署了cmak,其镜像为siriuszg/cmak:3.0.0.5。这些镜像除了支持x86服务器外,也都支持arm芯片服务器,如树莓派。
准备
硬件
- 一台虚机:4c8g40g
- 一台可以连接该虚机的mac pro,预装ansible和git,其中ansible版本为2.12.4
服务器类型 | OS | 内网IP | 备注 |
---|---|---|---|
目标服务器 | Centos7.9 | 10.0.1.121 | root/root1234 |
主控端 | mac pro | ? | ? |
安装规划
- 准备hosts文件
#hosts
server1 ansible_ssh_user=root ansible_ssh_host=10.0.1.121 ansible_ssh_pass=root1234
- 准备ansible安装脚本
- https://gitee.com/pi4k8s/ansible-exmaples.git
- 系统配置调优
- 安装docker
- 安装python
- 安装kafka
cuiyingfeng@bogon ~ % git clone https://gitee.com/pi4k8s/ansible-exmaples.git
cuiyingfeng@bogon ~ % cd ansible-exmaples# 用准备好的hosts文件替换下载的hosts
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % cat hosts
server1 ansible_ssh_user=root ansible_ssh_host=10.0.1.121 ansible_ssh_pass=root1234
cuiyingfeng@MacBook-Pro-2 ansible-exmaples %ANSIBLE_HOST_KEY_CHECKING=false ansible-playbook base-centos7.9/playbook/install-os-enforce.yaml -i hosts -e env_hosts=server1
安装dockercuiyingfeng@MacBook-Pro-2 ansible-exmaples %ANSIBLE_HOST_KEY_CHECKING=false ansible-playbook common-centos7.9/playbook/install-docker.yaml -i hosts -e env_hosts=server1
验证```bash
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % ansible -m shell -a docker --version -o -i hosts server1
server1 | CHANGED | rc=0 | (stdout) Docker version 20.10.16, build aa7e414
安装python3目标服务器安装的Centos7.9操作系统默认安装的python版本比较低,其实并不支持ansible的docker容器相关指令;这里我们需要先在目标服务器远程安装一个高版本的python,后续再通过指定python路径的方式去执行ansible脚本就可以成功操作docker容器了。
本步骤中我们可以直接通过yum方式安装pyhon3(centos7.9默认安装的版本是3.6.8),然后再用pip3安装docker,后续就可以正常启动docker容器了,只是需要指定ansible_python_interpreter为/usr/bin/python3。
另外要注意一下主控端的ansible版本号,本实践使用的ansible版本为2.12.4(2.9.27版本也可以通过),如果ansible版本过低可能会导致基于本实践的安装python3失败。
# 在安装docker的步骤中我们已经同步下载了安装python3的ansible脚本,可以直接执行如下
cuiyingfeng@MacBook-Pro-2 ansible-exmaples %ansible-playbook common-centos7.9/playbook/install-python3.yaml -i hosts -e env_hosts=server1
验证
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % ansible -m shell -a python3 --version -o -i hosts server1
server1 | CHANGED | rc=0 | (stdout) Python 3.6.8
安装kafka-3.1.0
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % ansible-playbook common-centos7.9/playbook/install-docker-kafka.yaml -i hosts -e env_hosts=server1PLAY [server1] *************************************************************************************************************************************************************TASK [Gathering Facts] *****************************************************************************************************************************************************
ok: [server1]TASK [zookeeper : mkdir conf directory] ************************************************************************************************************************************
changed: [server1]TASK [zookeeper : cp conf] *************************************************************************************************************************************************
changed: [server1]TASK [zookeeper : deploy zookeeper container] ******************************************************************************************************************************
changed: [server1]TASK [zookeeper : get ip] **************************************************************************************************************************************************
changed: [server1]TASK [kafka : mkdir conf directory] ****************************************************************************************************************************************
changed: [server1]TASK [kafka : cp conf] *****************************************************************************************************************************************************
changed: [server1]TASK [kafka : deploy kafka container] **************************************************************************************************************************************
changed: [server1]TASK [kafka : get ip] ******************************************************************************************************************************************************
changed: [server1]TASK [cmak : deploy cmak container] ****************************************************************************************************************************************
changed: [server1]TASK [cmak : get ip] *******************************************************************************************************************************************************
changed: [server1]RUNNING HANDLER [zookeeper : wait for containerIp to become active] ********************************************************************************************************
ok: [server1]RUNNING HANDLER [cmak : wait for container to become active] ***************************************************************************************************************
ok: [server1]PLAY RECAP *****************************************************************************************************************************************************************
server1: ok=13changed=10unreachable=0failed=0skipped=0rescued=0ignored=0
验证
验证zookeeper版本
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % ansible -m shell -a docker exec -it zookeeper /opt/kafka/bin/zookeeper-shell.sh localhost:2181 version -i hosts server1
server1 | CHANGED | rc=0 >
>
Connecting to localhost:2181
ZooKeeper CLI version: 3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
[2022-06-11 08:44:59,460] ERROR Exiting JVM with code 0 (org.apache.zookeeper.util.ServiceUtils)
验证kafka版本
cuiyingfeng@MacBook-Pro-2 ansible-exmaples % ansible -m shell -a docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --version -i hosts server1
server1 | CHANGED | rc=0 >
>
3.1.0 (Commit:37edeed0777bacb3)
配置cmakcmak前身是kafka-manager,是一款非常经典的kafka界面可视化工具。
访问 http://10.0.1.121:9000/
文章图片
文章图片
文章图片
点Cluster菜单,弹出下拉菜单,选择Add Cluster,进入如下界面
文章图片
文章图片
主要配置如上图显示4项即可,其中" Cluster Zookeeper Hosts" 配置为本实践部署的zk地址; " Enable JMX Polling" 的复选框勾选上;" Kafka Version" 下拉框默认显示2.4.0,其最大版本号也是该项,其实并没有内置我们本次实践中安装的kafka版本号3.1.0,这里我们先选择2.4.0,然后拖动本配置页直到底部,点Save按钮后,返回“Add Cluster”成功页面如下
文章图片
文章图片
返回集群详情页面,显示如下,可以看到实践中安装的kafka实例已经被正常添加
文章图片
文章图片
小结
【基于ansible在远程centos服务器docker环境安装kafka】本实践没有讲解kafka及其相关组件如何安装部署,只给出了ansible脚本和实用ansible执行部署,读者可参考直接使用。本实践除适用于一般的x86物理机或虚拟机外,也适用于安装了centos7.9的树莓派Pi4B(可参考树莓派4B安装Centos7.9),有兴趣的读者不妨一试。
推荐阅读
- JAVA SQL注入测试
- 计算机类SQL语言例子汇总
- 90天Java---mybatis与mybatis plus-1
- Clickhouse重复数据处理
- mysql|mysql删除重复数据,一条sql就搞定
- 全国超10亿用户!AntDB数据库的电信核心交易替换之路
- 面试经验|常见的字符串常量池必问面试题
- 分布式|redis管道是什么鬼()
- 浮动静态路由