簡介
我的《envoy powershell 遙控器》專案開源免費了
專案名:《envoy_powershell》
專案中文名:《envoy powershell 遙控器》
https://gitee.com/chuanjiao10/envoy_powershell
powershell 語言撰寫的 envoy 控制平面,
Envoy control plane written in powershell language.
envoy是比nginx更好的負載均衡網關,istio就是基于envoy,它的特色是【動態配置】負載均衡后端,而nginx的配置變化需要狂reload,
本專案是powershell語言撰寫的 envoy 控制平面,
本專案通過在linux中運行一個envoy容器,和powershell腳本,
把【使用本地組態檔,來動態控制envoy】,轉換成【從命令列,經過ssh協議,通過命令,控制envoy】,
以達到動態添加后端,洗掉后端,添加路由,洗掉路由的功能,
本專案暫時沒有寫,添加多個envoy【listeners】的腳本,因為負載均衡網關會占用多核心cpu,建議多虛擬機使用,
可以通過建立多個虛擬機,或多個目錄,docker run多個envoy容器,來實作多個【listeners】副本,

安裝
1 安裝一臺linux,不支持win,
2 linux一鍵安裝powershell,
https://gitee.com/chuanjiao10/kasini3000_agent_linux
3用git下載本軟體的所有腳本,并保存在/etc/envoy_ps1,
4 linux上安裝docker,
https://docs.docker.com/engine/install/
5 下載envoy:
docker pull envoyproxy/envoy-alpine:v1.14.4
使用
問:如何設定cds?
答: cds名,就是應用名,
add-cds.ps1 名
del-cds.ps1 名
delall-cds.ps1
問:如何設定后端ip,埠?
答:
add-eds.ps1 -cname cds名 -ip 1.2.3.4 -port 80
del-eds.ps1 -cname cds名 -ip 1.2.3.4
問:如何設定路由?
答:
add-rds.ps1 -cname cds名 -prefix '/url路徑' -domains '域名1','域名2'
del-rds.ps1 -cname cds名 -prefix '/url路徑' -domains '域名1','域名2'
delall-rds-and-new-rds.ps1 -cname cds名 # 這相當于添加了 -prefix '/' 和 -domains '*'
常見問題
問:設定的順序是?
答:
* 添加順序:應該先添加cds應用名,然后添加eds后端,最后添加http路由,
```
ssh root@你的linux的ip pwsh -f /etc/envoy_ps1/add-cds.ps1 -cname 'abc1'
ssh root@你的linux的ip pwsh -f /etc/envoy_ps1/add-eds.ps1 -cname 'abc1' -ip 1.2.3.4 -port 80
ssh root@你的linux的ip pwsh -f /etc/envoy_ps1/delall-rds-and-new-rds.ps1 -cname 'abc1'
```
* 洗掉順序:應該先洗掉http路由,后洗掉cds應用名,
* 后端:當cds存在時,可以任意增刪后端,可以把后端刪空,但不建議,當洗掉cds時,會洗掉cds所屬的所有后端,
問:如何查看腳本結果,及組態檔的正確性?
答:
http://linux的ip:9901/clusters #后端
http://linux的ip:9901/config_dump #配置資訊
問:如何測驗envoy的url跳轉結果?
答:
* 在linux機上,用curl測驗,跳轉后的結果,
* 在linux機上,用curl測驗,跳轉前的結果,
比如 192.168.1.2:80 ------> www.baidu.com:80
線在linux上curl后面的埠(百度),然后curl前面的埠,
問:url跳轉的源ip是什么?
答: 你的linux的ip
# 問:url跳轉的源埠是什么?
答: 取決于你運行docker時的命令列,
下面例子中,源埠就是80
```
docker container run -d -p 80:10000
```
經過ssh,遠程命令列的用法:
```
ssh root@你的linux的ip pwsh -f /etc/envoy_ps1/add-eds.ps1 -cname cds名 -ip 1.2.3.4 -port 80
```
問:如何運行容器?
答:
```
docker container run -d -p 80:10000 -p 9901:9901 -v /etc/envoy_ps1:/etc/envoy envoyproxy/envoy-alpine:v1.14.4
```
* envoy的lds監聽,本機linux的,所有ip的,10000埠,這個沒必要更改,通過容器映射后,暴露在linux機80埠,
* envoy的admin功能監聽,本機linux的,所有ip的,9901埠,
* 建立【/etc/envoy_ps1】目錄,并把本專案的所有powershell腳本放進去,
* **系統需求** envoy-alpine:v1.14.4 ,不支持15及以上,15的關鍵字變了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/126406.html
標籤:其他
