Egress
1 创建 egress 规则
(1)向management发出api命令:
createEgressFirewallRulecmd
的create()方法
最终在cloud数据库firewall_rules表中插一条state:Add,purpose: Firewall,traffic_type: Egress的记录。
execute()方法
management --> agent
SetFirewallRulesCommand
agent-->LibvirtComputingResource-->VirtualRoutingResource

firewall_egress.sh
DEFAULT_EXECUTEINVR_TIMEOUT = 120;//VR执行脚本超时时间120秒
2种操作类型:ScriptConfigItem,FileConfigItem
设置firewall_egress属于 ScriptConfigItem。
scripts/network/domr/router_proxy.sh
(2) 在agent上启动unix进程执行router_proxy.sh firewall_egress.sh routeIp ruleargs
router_proxy.sh检测 routeIp的VR是否ping通,并使用ssh登录到 routeIp去执行
/opt/cloud/bin/firewall_egress.sh ruleargs

图1、guestnetwork add egress firewall rule in mgt

图2、guestnetwork add egress firewall rule in agent

2 删除egress规则
api命令:DeleteEgressFirewallRuleCmd
DeleteEgressFirewallRuleCmd extends BaseAsyncCmd
因此,在management中通过api调度模块执行DeleteEgressFirewallRuleCmd的execute()方法。

由management发往agent端的command与添加egress规则一样SetFirewallRulesCommand,只是VR上执行的 ScriptConfigItem的ruleargs变动了。

图3、guestnetwork del egress firewall rule in mgt
Ingress
3 创建Ingress firewall规则
(1) 发往management的api命令为CreateFirewallRuleCmd
CreateFirewallRuleCmd extends BaseAsyncCreateCmd
因此,在management中通过api调度模块执行CreateFirewallRuleCmd的create()和execute()方法。
(2) 在create方法执行中向cloud数据库fire_wall表插入一条traffic_type为Ingress,purpose为Firewall的防火墙规则。
(3)在execute方法执行过程中,生成SetFirewallRulesCommand发送到VR所在的hostId(与Egress  firewall rule一样)。
(4)在agent上启动unix进程执行router_proxy.sh firewall_egress.sh routeIp ruleargs。

4 删除Ingress firewall规则
(1) 发往management的api命令为DeleteFirewallRuleCmd
DeleteFirewallRuleCmd extends BaseAsyncCmd
因此,在management中通过api调度模块执行DeleteFirewallRuleCmd的execute()方法。

(2) 在execute方法执行过程中,生成SetFirewallRulesCommand发送到VR所在的hostId(与Egress  firewall rule一样)。

(3) 在agent上启动unix进程执行router_proxy.sh firewall_egress.sh routeIp ruleargs。

5 添加VM的LoadBalancerRule
(1) 发往management的api命令为AssignToLoadBalancerRuleCmd
AssignToLoadBalancerRuleCmd extends BaseAsyncCmd
因此,在management中通过api调度模块执行AssignToLoadBalancerRuleCmd的execute()方法。

(2) 在execute方法执行过程中,生成LoadBalancerConfigCommand发送到VR所在的hostId。

(3) agent端处理该command通过修改VR上的haproxy的配置文件/etc/haproxy/haproxy.cfg来实现的。

图4、Ingress add loadbalancer

6 删除VM的LoadBalancerRule
(1) 发往management的api命令为RemoveFromLoadBalancerRuleCmd
RemoveFromLoadBalancerRuleCmd extends BaseAsyncCmd
因此,在management中通过api调度模块执行RemoveFromLoadBalancerRuleCmd的execute()方法。

(2) 在execute方法执行过程中,生成LoadBalancerConfigCommand发送到VR所在的hostId。

(3) agent端处理该command通过修改VR上的haproxy的配置文件/etc/haproxy/haproxy.cfg来实现的。


图5、ingress del loadbalancer

7 更新VM的loadBalancerRule
(1) 发往management的api命令为UpdateLoadBalancerRuleCmd
UpdateLoadBalancerRuleCmd extends BaseAsyncCustomIdCmd
因此,在management中通过api调度模块执行UpdateLoadBalancerRuleCmd的execute()方法。

(2) 在execute方法执行过程中,如果涉及到algorithm的修改,则会生成LoadBalancerConfigCommand发送到VR所在的hostId,name的修改只会更新数据库。

(3) agent端处理该command通过修改VR上的haproxy的配置文件/etc/haproxy/haproxy.cfg来实现的。

8 创建VM的PortForward规则
(1) 发往management的api命令为CreatePortForwardingRuleCmd
CreatePortForwardingRuleCmd extends BaseAsyncCreateCmd
因此,在management中通过api调度模块执行CreatePortForwardingRuleCmd的create()和execute()方法。

(2) 在create方法执行中向cloud数据库port_forwarding_rules表插入一条记录。
(3)在execute方法执行过程中,生成SetPortForwardingRulesCommand发送到VR所在的hostId(与Egress  firewall rule,Igress firewall 走同样的执行路径)。
(4)在agent上启动unix进程执行router_proxy.sh firewall_nat.sh routeIp ruleargs。

9 删除VM的PortForward规则
(1) 发往management的api命令为DeletePortForwardingRuleCmd
DeletePortForwardingRuleCmd extends BaseAsyncCmd
因此,在management中通过api调度模块执行DeletePortForwardingRuleCmd的execute()方法。

(2) 在execute方法执行过程中,生成SetPortForwardingRulesCommand发送到VR所在的hostId。

(3) 在agent上启动unix进程执行router_proxy.sh firewall_nat.sh routeIp ruleargs。

cloudstack GuestNetwork Ingress-Egress rule相关推荐

  1. 【云原生 | Envoy 系列】--Envoy Http Ingress,Egress,front Proxy静态配置

    1. Envoy Http Ingress Proxy Demo 1.1 Docker-compose配置 docker-compose中定义了: 网桥172.31.3.0/24 envoy ip地址 ...

  2. cloudstack vpc network egress-ingress rules

    1.添加VPC网络的ACL规则项(访问控制列表,作用类似防火墙规则) (1) 发往management的api命令为CreateNetworkACLCmd CreateNetworkACLCmd ex ...

  3. Control Egress Traffic

    默认情况下,启用Istio的服务无法访问集群外的URL,因为在pod中使用iptables将所有出站流量透明地重定向到仅处理集群内目的地的sidecar代理. 这个task描述如何配置Istio向启用 ...

  4. Control Egress TCP Traffic

    Control Egress Traffic task 演示了在服务网格内的应用如何访问外部(k8s集群外)的HTTP和HTTPS服务.快速提醒:默认情况下,启用Istio的应用不能访问集群外部的UR ...

  5. Control Egress Traffic(0.8)

    默认情况下,启用Istio的服务无法访问集群外的URL,因为在pod中使用iptables将所有出站流量透明地重定向到仅处理集群内目的地的sidecar代理. 这个task描述如何配置Istio向启用 ...

  6. ingress 详解

    文章目录 nodePort的缺点 Ingress和Ingress Controller 暴露Ingress Controller两种方式 安装 Ingress Controller,基于NodePor ...

  7. Kubernetes网络一年发展动态与未来趋势

    Kubernetes网络模型 谈到Kubernetes的网络模型,就不能不提它著名的"单Pod单IP"模型,即每个Pod都有一个独立的IP,Pod内所有容器共享网络namespac ...

  8. 深度剖析Service Mesh服务网格新生代Istio

    作者简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者.曾在亚信.爱立信.唯品会和ppmoney任职, 现任数人云资深架构师,本文由数人云独家授权 ...

  9. 万字长文|深度剖析Service Mesh服务网格新生代Istio

    Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮 ...

最新文章

  1. 【Spring】spring基于注解的声明式事务控制
  2. MIT教授Tomaso Poggio演讲与专访:智能背后的科学与工程 | 腾讯AI Lab学术论坛
  3. Maven3.x 插件开发入门
  4. java 执行javascript_说说如何在 Java 中执行 JavaScript 脚本
  5. Ubuntu Nginx uwsgi django 初试
  6. [开源]OSharpNS - .net core 快速开发框架 - 简介
  7. 【附答案】Java面试2019常考题目汇总(一)
  8. 计算机组成原理 北理,北京理工大学计算机组成原理期末复习.pdf
  9. android Fragment 笔记
  10. 53.NFS 服务器
  11. 2021-08-02 修改表
  12. mysql数据库忘记密码时如何修改
  13. 计算机三级数据库技术笔记
  14. 厦门理工学院android用药软件文献综述,厦门理工学院毕业论文规范.doc
  15. 获取iOS设备的UDID
  16. 好文推荐:努力是没有用的
  17. 虚拟路由器冗余协议——VRRP
  18. 2016教师节微信祝福语大全
  19. 【C++】【整活】鼠标抖动
  20. 嵌入式设备的启动过程

热门文章

  1. 如何查看电脑有几个内存条插槽
  2. 微信开发安卓虚拟键盘挡住输入框的问题
  3. IoTF 2021第七届中国国际物联网博览会
  4. python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...
  5. 新闲鱼验机源码+独立后台
  6. 如何用ChatGPT做一门课?(包含大纲、脚本、PPT文本)
  7. FlyoutMenus
  8. 24微信小程序开发2
  9. python画二维图_python3实现绘制二维点图
  10. UG NX 12 草图创建过程