個人《envoy powershell 遙控器》項目開源免費了linux
項目名:《envoy_powershell》nginx
項目中文名:《envoy powershell 遙控器》git
https://gitee.com/chuanjiao10/envoy_powershelldocker
powershell 語言編寫的 envoy 控制平面。
Envoy control plane written in powershell language.shell
envoy是比nginx更好的負載均衡網關,istio就是基於envoy。它的特點是【動態配置】負載均衡後端。而nginx的配置變化須要狂reload。後端
本項目是powershell語言編寫的 envoy 控制平面。負載均衡
本項目經過在linux中運行一個envoy容器,和powershell腳本,dom
把【使用本地配置文件,來動態控制envoy】,轉換成【從命令行,通過ssh協議,經過命令,控制envoy】,ssh
以達到動態添加後端,刪除後端,添加路由,刪除路由的功能。curl
本項目暫時沒有寫,添加多個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的關鍵字變了。