在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:easegress开源软件地址:https://gitee.com/megaease/easegress开源软件介绍:EasegressWhat is Easegress
The architecture of Easegress: Features
User CasesThe following examples show how to use Easegress for different scenarios.
For full list, see Cookbook. Getting StartedThe basic common usage of Easegress is to quickly set up proxy for the backend servers. We split it into multiple simple steps to illustrate the essential concepts and operations. Setting up EasegressWe can download the binary from release page. For example we use linux version: $ mkdir easegress$ wget https://github.com/megaease/easegress/releases/download/v1.1.0/easegress-v1.1.0-linux-amd64.tar.gz$ tar zxvf easegress-v1.1.0-linux-amd64.tar.gz -C easegress && cd easegress or use source code: $ git clone https://github.com/megaease/easegress && cd easegress$ make Then we can add the binary directory to the $ export PATH=${PATH}:$(pwd)/bin/$ easegress-server2021-05-17T16:45:38.185+08:00 INFO cluster/config.go:84 etcd config: init-cluster:eg-default-name=http://localhost:2380 cluster-state:new force-new-cluster:false2021-05-17T16:45:38.185+08:00 INFO cluster/cluster.go:379 client is ready2021-05-17T16:45:39.189+08:00 INFO cluster/cluster.go:590 server is ready2021-05-17T16:45:39.21+08:00 INFO cluster/cluster.go:451 lease is ready2021-05-17T16:45:39.231+08:00 INFO cluster/cluster.go:187 cluster is ready2021-05-17T16:45:39.253+08:00 INFO supervisor/supervisor.go:180 create system controller StatusSyncController2021-05-17T16:45:39.253+08:00 INFO cluster/cluster.go:496 session is ready2021-05-17T16:45:39.253+08:00 INFO api/api.go:96 api server running in localhost:23812021-05-17T16:45:44.235+08:00 INFO cluster/member.go:210 self ID changed from 0 to 689e371e88f78b6a2021-05-17T16:45:44.236+08:00 INFO cluster/member.go:137 store clusterMembers: eg-default-name(689e371e88f78b6a)=http://localhost:23802021-05-17T16:45:44.236+08:00 INFO cluster/member.go:138 store knownMembers : eg-default-name(689e371e88f78b6a)=http://localhost:2380 The default target of Makefile is to compile two binary into the directory We could run $ egctl member list- options: name: eg-default-name labels: {} cluster-name: eg-cluster-default-name cluster-role: writer cluster-request-timeout: 10s cluster-listen-client-urls: - http://127.0.0.1:2379 cluster-listen-peer-urls: - http://127.0.0.1:2380 cluster-advertise-client-urls: - http://127.0.0.1:2379 cluster-initial-advertise-peer-urls: - http://127.0.0.1:2380 cluster-join-urls: [] api-addr: localhost:2381 debug: false home-dir: ./ data-dir: data wal-dir: "" log-dir: log member-dir: member cpu-profile-file: "" memory-profile-file: "" lastHeartbeatTime: "2021-05-05T15:43:27+08:00" etcd: id: a30c34bf7ec77546 startTime: "2021-05-05T15:42:37+08:00" state: Leader After launched successfully, we could check the status of the one-node cluster. It shows the static options and dynamic status of heartbeat and etcd. Create an HTTPServer and PipelineNow let's create an HTTPServer listening on port 10080 to handle the HTTP traffic. $ echo 'kind: HTTPServername: server-demoport: 10080keepAlive: truehttps: falserules: - paths: - pathPrefix: /pipeline backend: pipeline-demo' | egctl object create The rules of routers above mean that it will lead the traffic with the prefix $ echo 'name: pipeline-demokind: HTTPPipelineflow: - filter: proxyfilters: - name: proxy kind: Proxy mainPool: servers: - url: http://127.0.0.1:9095 - url: http://127.0.0.1:9096 - url: http://127.0.0.1:9097 loadBalance: policy: roundRobin' | egctl object create The pipeline means it will do proxy for 3 backend endpoints in load balance policy TestNow you can use some HTTP clients such as $ curl -v http://127.0.0.1:10080/pipeline If you are not set up some applications to handle the 9095, 9096, and 9097 in the localhost, it will return 503 too. We prepare a simple service to let us test handily, the example shows: $ go run example/backend-service/mirror/mirror.go & # Running in background$ curl http://127.0.0.1:10080/pipeline -d 'Hello, Easegress'Your Request===============Method: POSTURL : /pipelineHeader: map[Accept:[*/*] Accept-Encoding:[gzip] Content-Type:[application/x-www-form-urlencoded] User-Agent:[curl/7.64.1]]Body : Hello, Easegress More FiltersNow we want to add more features to the pipeline, then we could add kinds of filters to the pipeline. For example, we want validation and request adaptation for the
$ cat pipeline-demo.yamlname: pipeline-demokind: HTTPPipelineflow: - filter: validator jumpIf: { invalid: END } - filter: requestAdaptor - filter: proxyfilters: - name: validator kind: Validator headers: Content-Type: values: - application/json - name: requestAdaptor kind: RequestAdaptor header: set: X-Adapt-Key: goodplan - name: proxy kind: Proxy mainPool: servers: - url: http://127.0.0.1:9095 - url: http://127.0.0.1:9096 - url: http://127.0.0.1:9097 loadBalance: policy: roundRobin$ egctl object update -f pipeline-demo.yaml After updating the pipeline, the original $ curl http://127.0.0.1:10080/pipeline -H 'Content-Type: application/json' -d '{"message": "Hello, Easegress"}'Your Request===============Method: POSTURL : /pipelineHeader: map[Accept:[*/*] Accept-Encoding:[gzip] Content-Type:[application/json] User-Agent:[curl/7.64.1] X-Adapt-Key:[goodplan]]Body : {"message": "Hello, Easegress"} We can also see Easegress send one more header DocumentationSee reference and developer guide for more information. RoadmapSee Easegress Roadmap for details. Community
LicenseEasegress is under the Apache 2.0 license. See the LICENSE file for details. |
请发表评论