---
# System prepended metadata

title: AWS Kafka Docker 建立

---

# AWS Kafka Docker 建立

###### tags: `NTUST` `IGS` `AWS` `Kafka`

機房選擇：Tokyo

![](https://i.imgur.com/tdZglFz.png)


# 外部 Ping 連線
![](https://i.imgur.com/JCrz4SP.png)



# 1. 創建 EC2 Instance 服務主機

選擇 **Launch a virtual machine With EC2**
![](https://i.imgur.com/g536Sud.png)

選擇 Instance 所需規格, 建議為 Large , 點選 Next
![](https://i.imgur.com/rWfBBOS.png)

詳細規格說明, 選擇後點選 Next 
![](https://i.imgur.com/XWCRM1T.png)

點選 6.Configure 分頁, 設立開放 Port, 點選 Add Rule
![](https://i.imgur.com/YWwAyBd.png)

設立 2181 (Zookeeper), 9092(Kafka) 端口, 點選 Preview
![](https://i.imgur.com/1J5zafs.png)

確認後 Lauch 執行
![](https://i.imgur.com/qBh8aAk.png)
---

產生金鑰, 未來須透過此檔案進行 SSH 連線
![](https://i.imgur.com/7GDeFxR.png)

完成畫面, 進入檢視 Instance
![](https://i.imgur.com/JhbeRca.png)

確認被分配的 IP 位置
![](https://i.imgur.com/hiIMQy0.png)




測試 ping **'Public ipV4 address'**
![](https://i.imgur.com/lP06sOf.png)

進入產生 PEM 金鑰匙檔案資料夾
![](https://i.imgur.com/o0LPAVG.png)

修改權限 chmod 400 金鑰檔
![](https://i.imgur.com/Mcl71Ie.png)

點選 Connect 取得連線資訊
![](https://i.imgur.com/5zoNmmP.png)

取得 ssh 連線相關指令
![](https://i.imgur.com/VTKG0Jx.png)

進入AWS - EC2 Instance 當中
![](https://i.imgur.com/AekPwqI.png)

# 2. 安裝 Docker 

Ubuntu 套件管理 apt 更新
``` bash=
sudo apt-get update                  #更新 Apt 
```
![](https://i.imgur.com/GOdYRS6.png)

安裝 Docker
``` bash=
sudo apt-get install -y docker.io    #安裝 Docker
```
![](https://i.imgur.com/rjE5CHJ.png)

參考 Kafka Docker 安裝教學文件

``` bash=
sudo docker pull wurstmeister/kafka:2.12-2.4.1
sudo docker pull wurstmeister/zookeeper
``` 
![](https://i.imgur.com/q0vehdB.png)

![](https://i.imgur.com/GTzvpCK.png)

建立 Container 外部網路連線
``` bash=
sudo docker network create --subnet=172.18.0.0/16 mynetwork
``` 

![](https://i.imgur.com/i6QoeVT.png)

啟動 Zookeeper 
``` bash=
sudo docker run -d --name zookeeper --network mynetwork --ip 172.18.0.2 -p 2181:2181 wurstmeister/zookeeper
``` 
![](https://i.imgur.com/mlQXiux.png)

啟動單節點 Kafka 並設置 Listeners
** 注意, 需要將對外公開 ip 設置於 KAFKA_ADVERTISED_LISTENERS 當中
``` bash=
sudo docker run --name kafka1 --network mynetwork --ip 172.18.0.3 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.2:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://'Public ipV4 address':9092 -e KAFKA_LISTENERS=PLAINTEXT://172.18.0.3:9092 -dit wurstmeister/kafka:2.12-2.4.1
``` 

![](https://i.imgur.com/KS4LOtN.png)


# 3. GameServer 傳入資料

於GameServer 發送 Kafka 資料
![](https://i.imgur.com/tqQ5XJF.png)

進入 Kafka 主機
![](https://i.imgur.com/NlqiIFJ.png)

透過 kafka-console-consumer.sh 查看資料
``` bash=
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server 'Public ipV4 address':9092 --topic gameSrcTpc --from-beginning
``` 

顯示 gameSrcTpc 相關資料
![](https://i.imgur.com/s53At54.png)

