《yunyingoo-2015云栖大会-雪球的Docker 实践-高磊.pdf》由会员分享,可在线阅读,更多相关《yunyingoo-2015云栖大会-雪球的Docker 实践-高磊.pdf(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、雪球的 Docker 实践高磊运维架构师Day0:容器的选型Day1:业务迁移、填坑Day2:混合云Day3:发布系统Tomorrow:资源调度目 录 content雪球聪明的投资者都在这里http:/2010年成立,C 轮沪深港美社区、行情、组合、交易、More粘性极高DAU 1M,带宽 1.5G物理机 200+,ECS 50+,容器 1k+Day0:雪球对容器的选型物理机 vs VM vs Container vs Cloud VM 成本稳定性性能Day0:雪球对容器的选型资源隔离标准化伸缩能力性能最优CPU / 内存绑定Kernel 及参数调优物理机VM异构 OSCloud VM硬件资源
2、优势全球网络接入优势基础设施健全运维平台产品化DockerLXCBuild-Ship-Run极轻标准化持久化不受 AUFS 约束Daemon 能力Day1:上 Docker、迁业务、填坑 摸着石头过河123构建Dockerfile;临时容器分发Docker Image;Registry运行 网络;DaemonDocker Base Image 的统一动静分离减少层级:灵活使用脚本,而不是只使用 DockerfileDocker 业务 Image 的层级树状临时容器访问外网能力:宿主机 ip_forward=1,或者设定 ip/gwDaemon能力:/sbin/init构建vsGitlabXue
3、qiuUbuntu- upstartbaseJDK8NodeJSJDK6PythonResin- JDK8+static.sh +runtime.shResin- JDK6+ jdk6+ jdk8+ nodejs+ python+ resin+ resinBase ImagesProject ImagesProject ContainersBiz-BBiz-A+ business+ businessBiz-DBiz-C+ business+ businessBiz-E+ businessRegistry 2.0高可用删除 https:/ 性能兼容性分发网络:Bridge 模式(Flat):br
4、idge_ports 到物理网卡Bridge 模式(NAT):内核转发Host 模式:端口映射Bridge(Flat):自建桥接禁用 ip_forward 和 iptables禁用 x_*、xt_*、nf_*、iptables_* 模块资源限制:CPU:period + quotaMemory:disable swap4 core 8G运行固定IP、固定MAC:运行时修改 eth0 IP-mac-address 传入MAC地址Hostname、Hosts、DNS:参数传入修改对应的文件Daemon 能力/sbin/init 以 PID=1 启动(entrypoint)且无任何参数运行IP=“a
5、a.bb.cc.dd“MAC_TXT=echo “$IP“ | awk -F. print “0x02 0x42 “$1“ “$2“ “$3“ “$4 MAC=printf “%.2x:%.2x:%.2x:%.2x:%.2x:%.2x“ $MAC_TXT交互:sshd环境变量日志、持久化、日志收集:以 rw 映射 /persist 目录到物理机对应 DockerIP 的目录把 /persist/logs 目录软连接为业务的相对 logs 目录仅在物理机上做日志收集监控:仅在物理机上做监控通过 cgroups 获取 CPU / MEM / NETWORK / BLOCKIO通过 Dockerex
6、ec API 获取容器内部 metrics运行Day2:混合云 通过采购硬件实现弹性扩容的,都是耍流氓VPC ECS:使用 Bridge(NAT)方案开启 ip_forward 和 iptables 转发每个 ECS 上有独立的 Docker子网C段VPC vRouter:分别对各 ECS 设置目标路由缺点:配置成本网段管理成本性能损耗其他方案:OVS / FlannelDockereth0docker0DockerGateway 192.168.1.254BridgeIP 192.168.1.1/25192.168.1.1192.168.1.2Dockereth0docker0DockerG
7、ateway 192.168.2.254BridgeIP 192.168.2.1/25192.168.2.1192.168.2.2vSwitch172.16.1.0/24vRouterECS 172.16.1.1ECS 172.16.1.2to 192.168.1.1/24 via 172.16.1.1to 192.168.2.1/24 via 172.16.2.1Day3:发布系统 Rolling 不再申请机器,代码直接上线基于 Capistrano与 Git 集成远程 ssh分支、环境、版本管理槽点太多:现场编译费时间线上环境要部署的不一定是经过 RC 环境验证的回滚不清晰、回滚慢不容易做
8、灰度上线不容易对环境做固化,标准化不容易走自动化测试流程跨 IDC 与 Cloud VM 的部署能力旧的部署平台设计思路CapistranoRolling编译部署现场代码提交时分发sshDocker API运行“脏”环境“干净”环境流程控制ShellWeb版本管理Local,弱Registry,强伸缩调度慢快Hook功能Shell,弱Web,强跨IDC部署能力强弱GitlabJenkinsBuildDeployRolling Docker RegistryResource SchedulerDocker APIMachineC M D BDocker APIMachineDocker APIMachineBuildShipRunRolling 部署镜像选择Rolling 部署资源配置Rolling 运行状态Tomorrow:资源调度资源层Docker资源标准化4 core 8 GBlockio quotaNetwork quota调度Docker与宿主机 Metrics 收集服务发现资源+调度高磊 微信:lostleon 邮箱: