热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Centos7Docker多主机容器互连--基于OVS

来一张自己画的图,mark:2016年6月27日17:09:14自己理解,如有错误多谢指教。centos7,部署OVS和docker、以及基于centos6.8的sshimages命令。

来一张自己画的图,mark:2016年6月27日17:09:14

自己理解,如有错误 多谢指教。

centos7, 部署OVS和docker、以及基于centos6.8的ssh images 命令。

#!/bin/bash
#auther :V

yum upgrade -y
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
systemctl stop firewalld.service && systemctl disable firewalld.service
cat>>/etc/yum.repos.d/docker.repo<[docker-repo]
name= docker repo
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
V
yum install docker-engine -y
chkconfig docker on
systemctl enable docker.service
systemctl preset-all
systemctl start docker.service
systemctl enable docker.service
docker pull centos:centos6.8
mkdir ssh
cd ssh
yum -y install vim
cat>> Dockerfile<#---------ssh!
FROM centos:centos6.8
MAINTAINER 'shiyiwen@anjubao.com'
ENV TERM xterm
RUN yum -y install openssh-server;yum clean all
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN /bin/echo 'root:anjubao.com'|chpasswd
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
V
docker build -t='syw/ssh:centos6.8' .
if [ $? -ne 0 ];then
echo 'build error'
exit 0
fi
docker run -d --name test1 syw/ssh
yum install bridge-utils -y
cd ~
yum install wget -y
yum -y install openssl-devel kernel-devel
yum groupinstall "Development Tools"
wget http://openvswitch.org/releases/openvswitch-2.5.0.tar.gz
yum install gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool -y
mkdir -p ~/rpmbuild/SOURCES
tar zxf openvswitch-2.5.0.tar.gz
cp openvswitch-2.5.0.tar.gz ~/rpmbuild/SOURCES/
ls /lib/modules/$(uname -r) -ln
rpmbuild -bb --without check openvswitch-2.5.0/rhel/openvswitch.spec
yum -y install tree
cd rpmbuild/RPMS/x86_64/
yum localinstall openvswitch-2.5.0-1.x86_64.rpm -y
systemctl start openvswitch.service

 二、配置OVS

HOST1

 

#!/bin/bash
#author:V
ETHNAME=`ip addr|grep -w "2:"|awk '{print $2}'|awk -F: '{print $1}'`
IPADDR=`ip addr|grep inet|grep -v "inet6"|awk ' NR==2 { print $2 }'|awk -F"/" '{print $1}'`
echo 1 > /proc/sys/net/ipv4/ip_forward
ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.17.129
brctl addbr kbr0
brctl addif kbr0 ovsbr0
ip link set dev docker0 down
ip link del dev docker0

#=============configure kbr0 by:v=====网上有的版本会少参数,centos7 会报错哦=====
cat >>/etc/sysconfig/network-scripts/ifcfg-kbr0 <DEVICE=kbr0
OnBOOT=YES
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.254
USERCTL=no
TYPE=Bridge
IPV6INIT=no
V

cat >>/etc/sysconfig/network-scripts/route-ens32 <172.17.2.0/24 via 192.168.17.129 dev eno16777736
V
systemctl restart network.service

systemctl stop docker.service
#===============================configure docker network====by:v=====
cat >>/etc/systemd/system/docker.service.d/docker.conf<[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -b kbr0
V
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.d/rc.local<ip route del default
ip route add default via 192.168.17.2 dev $ETHNAME
brctl addif kbr0 ovsbr0
V
systemctl start docker.service

 HOST2

#!/bin/bash
#author:V
ETHNAME=`ip addr|grep -w "2:"|awk '{print $2}'|awk -F: '{print $1}'`
IPADDR=`ip addr|grep inet|grep -v "inet6"|awk ' NR==2 { print $2 }'|awk -F"/" '{print $1}'`
echo 1 > /proc/sys/net/ipv4/ip_forward
ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.17.128
brctl addbr kbr0
brctl addif kbr0 ovsbr0
ip link set dev docker0 down
ip link del dev docker0

#=============configure kbr0 by:v=====网上有的版本会少参数,centos7 会报错哦=====
cat >>/etc/sysconfig/network-scripts/ifcfg-kbr0 <DEVICE=kbr0
OnBOOT=YES
BOOTPROTO=static
IPADDR=172.17.2.1
NETMASK=255.255.255.0
GATEWAY=172.17.2.254
USERCTL=no
TYPE=Bridge
IPV6INIT=no
V

cat >>/etc/sysconfig/network-scripts/route-ens32 <172.17.2.0/24 via 192.168.17.128 dev eno16777736
V
systemctl restart network.service

systemctl stop docker.service
#===============================configure docker network====by:v=====
cat >>/etc/systemd/system/docker.service.d/docker.conf<[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// -b kbr0
V
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.d/rc.local<ip route del default
ip route add default via 192.168.17.2 dev $ETHNAME
brctl addif kbr0 ovsbr0
V
systemctl start docker.service

 

容器A 可以 ping通HOST2的容器A。HOST1 可以用SSH登录到 HOST2的容器中。so 只需要在外面将路由指向容器即可。

ps:

1、在docker run 的时候的cmd 是会覆盖dockerfile的cmd 即,如果需要覆盖可在容器/usr/sbin/sshd -D 启动sshd。

2、本博文中OVS为2.5 之前的bug 修复,所以不需要修改spec 文件。

3、centos7 或者说 是docker 1.11 版本的docker 绑定网卡 路径为/etc/systemd/system/docker.service.d/docker.conf。为system文件夹 说明是随系统启动。而里面的execstart可以看官方文档规定,必须要空定义一个。

4、这里的网关 (使用ip route 查看) 默认网关为kbr0 定义的网关,这里需要删除掉 更换网关,不然 宿主机和容器都无法通外网。

5、brctl addif 讲ovsbr0 加入到kbr0 这个网桥。重启network 服务会消失,所以不要重启服务,或者重启系统,这里我们添加到rc.local centos7的rc.local 本是没有执行权限 so 需要chmod +x 。

6、这里为gre0模式 ,如果想转换为vxlan 修改对应的type 即可,具体区别请百度。

7、以上脚本只适合centos7,但是过程是一样。

                                                      如有问题 请留言!


推荐阅读
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux下安装依赖包版本高解决方法
    本文介绍了在Linux系统下,当已安装的依赖包版本高于需要安装的依赖包版本时,解决方法包括欺骗安装程序和修改相关配置文件等操作。针对不同情况,提供了不同的解决方案。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • PatchODAX8: ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
author-avatar
caoxingchi_411
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有