cloudstack GuestNetwork Ingress-Egress rule
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相关推荐
- 【云原生 | 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地址 ...
- cloudstack vpc network egress-ingress rules
1.添加VPC网络的ACL规则项(访问控制列表,作用类似防火墙规则) (1) 发往management的api命令为CreateNetworkACLCmd CreateNetworkACLCmd ex ...
- Control Egress Traffic
默认情况下,启用Istio的服务无法访问集群外的URL,因为在pod中使用iptables将所有出站流量透明地重定向到仅处理集群内目的地的sidecar代理. 这个task描述如何配置Istio向启用 ...
- Control Egress TCP Traffic
Control Egress Traffic task 演示了在服务网格内的应用如何访问外部(k8s集群外)的HTTP和HTTPS服务.快速提醒:默认情况下,启用Istio的应用不能访问集群外部的UR ...
- Control Egress Traffic(0.8)
默认情况下,启用Istio的服务无法访问集群外的URL,因为在pod中使用iptables将所有出站流量透明地重定向到仅处理集群内目的地的sidecar代理. 这个task描述如何配置Istio向启用 ...
- ingress 详解
文章目录 nodePort的缺点 Ingress和Ingress Controller 暴露Ingress Controller两种方式 安装 Ingress Controller,基于NodePor ...
- Kubernetes网络一年发展动态与未来趋势
Kubernetes网络模型 谈到Kubernetes的网络模型,就不能不提它著名的"单Pod单IP"模型,即每个Pod都有一个独立的IP,Pod内所有容器共享网络namespac ...
- 深度剖析Service Mesh服务网格新生代Istio
作者简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者.曾在亚信.爱立信.唯品会和ppmoney任职, 现任数人云资深架构师,本文由数人云独家授权 ...
- 万字长文|深度剖析Service Mesh服务网格新生代Istio
Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮 ...
最新文章
- 【Spring】spring基于注解的声明式事务控制
- MIT教授Tomaso Poggio演讲与专访:智能背后的科学与工程 | 腾讯AI Lab学术论坛
- Maven3.x 插件开发入门
- java 执行javascript_说说如何在 Java 中执行 JavaScript 脚本
- Ubuntu Nginx uwsgi django 初试
- [开源]OSharpNS - .net core 快速开发框架 - 简介
- 【附答案】Java面试2019常考题目汇总(一)
- 计算机组成原理 北理,北京理工大学计算机组成原理期末复习.pdf
- android Fragment 笔记
- 53.NFS 服务器
- 2021-08-02 修改表
- mysql数据库忘记密码时如何修改
- 计算机三级数据库技术笔记
- 厦门理工学院android用药软件文献综述,厦门理工学院毕业论文规范.doc
- 获取iOS设备的UDID
- 好文推荐:努力是没有用的
- 虚拟路由器冗余协议——VRRP
- 2016教师节微信祝福语大全
- 【C++】【整活】鼠标抖动
- 嵌入式设备的启动过程
热门文章
- 如何查看电脑有几个内存条插槽
- 微信开发安卓虚拟键盘挡住输入框的问题
- IoTF 2021第七届中国国际物联网博览会
- python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...
- 新闲鱼验机源码+独立后台
- 如何用ChatGPT做一门课?(包含大纲、脚本、PPT文本)
- FlyoutMenus
- 24微信小程序开发2
- python画二维图_python3实现绘制二维点图
- UG NX 12 草图创建过程