0%

openvpn service安装与配置

1.下载脚本wget https://git.io/vpn -O openvpn-install.sh
1
2
3
4
#添加执行权限
chmod +x openvpn-install.sh
#总结
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
2.运行脚本./openvpn-install.sh,设置如下
  1. 监听地址设置为空 IP address:
  2. Protocol:[2]TCP
  3. Port:1194
  4. 不选DNS:
  5. client name: client_k2
  6. External IP : 112.74.51.136
3. 配置服务端vim /etc/openvpn/server.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
#指定ip,所以记录ip没效果屏蔽
;ifconfig-pool-persist ipp.txt
;push "redirect-gateway def1 bypass-dhcp"
#推送服务器路由
push "route 10.14.0.0 255.255.255.0"
#推送k2客户端子网路由到所有客户端除了ccd里面申明了该路由的客户端
push "route 192.168.123.0 255.255.255.0"
#添加服务器路由,访问客户端K2的192.168.123.0子网通过网关10.14.0.2(k2客户端ip)
route 192.168.123.0 255.255.255.0 10.14.0.2
#添加客户端配置目录,启用之后,每个客户端必须指定ip,否正有可能访问不了其他客户端的子网
client-config-dir ccd
#客户端访问客户端
client-to-client
4. 配置客户端路由mkdir /etc/openvpn/ccdvim /etc/openvpn/ccd/client_k2
1
2
3
4
5
#设置该客户端的vpn的ip是10.14.0.2,子网掩码必须是255.255.255.0,如果启用ccd,必须配置
ifconfig-push 10.14.0.2 255.255.255.0
#申明192.168.123.0是自己的子网,并且让子网也可以访问vpn服务器,申明之后不会推送该路由到该客户端
iroute 192.168.123.0 255.255.255.0
route 192.168.123.0 255.255.255.0
5.添加客户端./openvpn-install.sh
  1. Select an option[1-4]:1 (add a new user)
  2. client name: client_worker
1
2
3
4
5
6
7
#编辑配置文件
vim /etc/openvpn/server.conf
#重启生效
systemctl restart openvpn@server.service
systemctl enable openvpn@server.service
#注释掉客户端的
#setenv opt block-outside-dns
6.下载ovpn文件,并修改配置,注释调#setenv opt block-outside-dns
7.常用命令
1
2
3
4
5
6
#重启生效
systemctl restart openvpn@server.service
#使能服务
systemctl enable openvpn@server.service
#ssh下载文件
scp root@112.74.51.136:/root/client_xuan_ubuntu.ovpn ./

openvpn client 安装与配置

1.安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
yum update #更新
yum install vim #安装vim
yum install epel-release #添加epel源
yum clean all # 可选
yum update # 可选
yum makecache # 可选
yum install openvpn iptables-services #安装openvpn
scp root@112.74.51.136:~/client_vm.ovpn /etc/openvpn/client/ #下载客户端配置
#注释掉客户端的vim /etc/openvpn/client/client_vm.ovpn
#setenv opt block-outside-dns
#-----------------------废弃------------------------------------------------
openvpn --daemon --cd /etc/openvpn/client --config client_vm.ovpn --log-append /etc/openvpn/openvpn.log #启动
tail -100f /etc/openvpn/openvpn.log #查看日志
ps -ef | grep openvpn #查看openvpn进程
kill <pid> #杀死进程
#---------------------废弃结束------------------------------------------------------
#openvpn-client启动服务,反斜杠转义字符,实际名称是openvpn-client@.service
vim /lib/systemd/system/openvpn-client\@.service
#修改
ExecStart=/usr/sbin/openvpn --suppress-timestamps --nobind --config %i.conf
#为
ExecStart=/usr/sbin/openvpn --daemon --config %i.ovpn --log-append /etc/openvpn/openvpn.log
#防止已经启动,@符号后面等效与%i,所以这里为客户端配置的名字
systemctl restart openvpn-client@client_vm
#开机启动
systemctl enable openvpn-client@client_vm

openvpn 服务端的局域网远程访问

准备工作,安装iptables

It is possible to go back to a more classic iptables setup. First, stop and mask the firewalld service:

1
2
systemctl stop firewalld
systemctl mask firewalld

Then, install the iptables-services package:

1
yum install iptables-services

Enable the service at boot-time:

1
systemctl enable iptables

Managing the service

1
systemctl [stop|start|restart] iptables

Saving your firewall rules can be done as follows:

1
service iptables save

添加路由

1
2
iptables -t nat -A POSTROUTING -s 10.14.208.0/24 -j SNAT --to-source  192.168.1.230
service iptables save

vim /etc/openvpn/server.conf 添加

1
push "route 192.168.1.0 255.255.255.0"

腾讯云openvpn服务器所在内网供openvpn客户端访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 10.34.0.0为openvpn网段
sudo iptables -t nat -A POSTROUTING -s 10.34.0.0/24 -o eth0 -j MASQUERADE
#查看规则
sudo iptables -nL -t nat
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match src-type LOCAL
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE all -- 172.18.0.0/16 0.0.0.0/0
MASQUERADE tcp -- 172.18.0.11 172.18.0.11 tcp dpt:3306
MASQUERADE all -- 10.34.0.0 0.0.0.0/0
#这句是新加的
MASQUERADE all -- 10.34.0.0/24 0.0.0.0/0
#还需要检查是否开启ipv4转发
vim /etc/sysctl.conf
>net.ipv4.ip_forward = 1
sysctl -p

子网访问总结

服务端子网(服务端是网关)

服务端子网(服务端不是网关)

客户端子网(客户端是网关)

客户端子网(客户端不是网关)

不是网关统一需要在客户端或服务端设置转发

1
2
3
4
5
6
# 10.34.0.0为openvpn网段
sudo iptables -t nat -A POSTROUTING -s 10.34.0.0/24 -o eth0 -j MASQUERADE
#还需要检查是否开启ipv4转发
vim /etc/sysctl.conf
>net.ipv4.ip_forward = 1
sysctl -p

注意事项

iptables不需要启动,也可以做路由转发

openvpn tun模式下客户端与内网机器通信

iptables规则的查看和清除

iptables 添加,删除,查看,修改

How can i use iptables on centos 7?

使用openvpn实现访问远程网络

参考

官网

脚本github官网Nyr/openvpn-install

openvpn的一个一键安装脚本“openvpn-install”让openvpn重放光彩,又可用openvpn翻墙了

How to Configure OpenVPN Server on CentOS 7.3

使用 OpenVPN 互联多地机房及Dokcer跨主机/机房通讯

扩大OpenVPN使用范围,包含服务器或客户端子网中的其他计算机

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
docker ps [-a] #查看运行容器状态,-a 查看所有容器
docker stop <容器id> #停止运行容器
docker rm <容器id> [-f] #删除容器,-f 删除运行的
docker rmi <镜像id> #删除镜像
docker exec -it <容器id> </bin/bash或者sh> 进入容器(bash或者sh)
# -p端口映射 -v挂载 -d后台,--name容器名字,--rm和-d不能通用,--rm启动停止后删除
docker run -p 80:80 -v /data:/data --name mynginx -d nginx:latest
# 运行容器并进去,一次性
docker run -it --rm ubuntu:18.04 /bin/bash
exit #退出容器
#添加标签
docker node update --label-add <KEY>=<VALUE> <NODE ID|NAME>
#查看节点详细信息
docker node inspect <NODE ID|NAME>
#查看网络
ifconfig
#推镜像到仓库
docker push exxk/gitlab_cloud:tagname
#拉取镜像
docker pull exxk/gitlab_cloud:tagname
#远程连接
sudo docker -H tcp://ip:port <docker名令>
#eg查看远程的又什么镜像
sudo docker -H tcp://10.14.0.4:2375 images

docker安装

1
2
3
4
5
6
7
8
9
10
11
12
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#或者阿里镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce
systemctl start docker.service
# 开机启动
systemctl enable docker
sudo docker run hello-world
sudo docker version
yum list docker-ce --showduplicates | sort -r

daemon设置

修改/etc/docker/daemon.json文件

1
2
3
4
5
vim /etc/docker/daemon.json
#改完后重新加载配置
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
docker加速阿里云加速地址
1
2
3
4
5
6
7
#等效于添加daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://*****.mirror.aliyuncs.com"],
"hosts":["unix:///var/run/docker.sock"]
}
EOF
远程访问docker
方法1

在daemo.json添加"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]

hosts 分tcp,uninx,fd三种模式,第一中时tcp指定网络连接方式,0.0.0.0:2375是指所有网络都可以连接,不安全,因此一般会加上stl证书形式,这里我用的局域网,所有没有加证书,指定局域网设置主机所属ip例如网卡2的ip为10.14.0.2,因此设置为10.14.0.2,只有10.14.0这个局域网可以访问,第二种uninx时指本地可以自由连接docker,第三种,理解不是很清楚,不发表见解

方法2(方法1能采用尽量用1)

直接修改服务的启动文件,添加-H参数指定

1
2
3
4
5
6
#解决portainner添加节点失败centos7.2 修改 /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd
#修改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
systemctl daemon-reload
systemctl restart docker.service
参考:docker 远程连接

docker-compose安装

法一(当前采用)
1
2
3
4
#pip安装方式
pip install docker-compose
#pip卸载方式
pip uninstall docker-compose
法二

安装docker-compose(以容器类型安装)

法三
1
2
3
4
5
6
7
sudo -i
#安装脚本,替换为最新的版本 ,这一步会失败,执行sudo -i
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#添加执行权限
chmod +x /usr/local/bin/docker-compose
#测试(失败,需要执行./docker-compose --version 没全局)
docker-compose --version

基本常用命令

1
2
3
4
5
docker-compose up -d
docker-compose down
docker-compose stop
docker-compose rm
docker-compose logs

docker-machine

linux

1
2
3
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
chmod +x /tmp/docker-machine &&
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

windos git bash

1
2
3
if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

问题以及解决方法

  1. docker info 出现如下警告

    奇葩现象,在mongo里面添加了用户之后,springboot连接数据库就连接不是,但是外面能连接上,然后docker info会出现下面的错误,然后执行下面 的解决方案就可以连接上了

    可能(阿里云概率)会导致一个stack服务无法通过宿主机内网ip访问第二个stack服务

    1
    2
    WARNING: bridge-nf-call-iptables is disabled
    WARNING: bridge-nf-call-ip6tables is disabled

    解决:

    方式一

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 方式一
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

    # 方式二
    vi /etc/sysctl.conf
    # 添加以下内容
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    #最后执行
    sysctl -p
  2. 问题:构建镜像不能用-减号命名镜像的名字,使用docker-statck 部署找不到镜像

  3. 问题: 执行sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    1
    2
    3
    4
    5
    [root@lfadmin ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    已加载插件:fastestmirror, langpacks
    adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
    grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
    Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, 'Resolving timed out after 30541 milliseconds')

    解决:

    vim /etc/yum.repos.d/docker-ce.repo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    [docker-ce-stable]
    name=Docker CE Stable - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-stable-debuginfo]
    name=Docker CE Stable - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-stable-source]
    name=Docker CE Stable - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/stable
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge]
    name=Docker CE Edge - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge-debuginfo]
    name=Docker CE Edge - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-edge-source]
    name=Docker CE Edge - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/edge
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test]
    name=Docker CE Test - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test-debuginfo]
    name=Docker CE Test - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-test-source]
    name=Docker CE Test - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/test
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly]
    name=Docker CE Nightly - $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly-debuginfo]
    name=Docker CE Nightly - Debuginfo $basearch
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/debug-$basearch/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg

    [docker-ce-nightly-source]
    name=Docker CE Nightly - Sources
    baseurl=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/source/nightly
    enabled=0
    gpgcheck=1
    gpgkey=https://mirrors.ustc.edu.cn/docker-ce/linux/centos/gpg
  4. 问题:sudo yum install docker-ce提示如下

    1
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

    解决:

    1
    2
    yum provides '*/applydeltarpm'
    yum install deltarpm
  5. 问题docker structure needs cleaning

    解决:docker system prune -a

  6. 问题设置daemo.json中hosts远程tcp连接时,不能启动

    解决:vim /lib/systemd/system/docker.service

    1
    2
    3
    ExecStart=/usr/bin/dockerd -H fd://
    #修改为
    ExecStart=/usr/bin/dockerd

    然后重载配置systemctl daemon-reload

    重启docker服务systemctl restart docker.service

    原因:冲突和hosts

Docker-machine

安装 Docker Toolbox

官网:docker/machine

1
2
3
4
5
6
7
8
9
10
11
#创建manager docker主机
docker-machine create -d hyperv manager
#查看主机
docker-machine ls
#删除主机
docker-machine rm -f manager
#进入docker主机
docker-machine ssh manager
#退出主机
exit
docker swarm join --token SWMTKN-1-2483wscrxzqlzn1ulk8o3izurjqdzcrg38uihaontlll788mq5-d55xj8yaycb2392q5kv02v4kq 192.168.100.214:2377

注意

如果使用power-shell,记得用管理员权限

Docker-machine单独安装 (废弃)

官网:docker/machine
环境
  • win10
  • gitbash

安装(On Windows with git bash)

1
2
3
$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
curl -L https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
chmod +x "$HOME/bin/docker-machine.exe"

执行上面的命令半天下载不下来,可以手动下载https://github.com/docker/machine/releases/download/v0.12.2/docker-machine-Windows-x86_64.exe然后执行

1
if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && mv docker-machine-Windows-x86_64.exe $HOME/bin/docker-machine.exe && chmod +x "$HOME/bin/docker-machine.exe"

centos7.3升级内核

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#查看内核版本
uname -a
uname -r
#导入elrepo的key
rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装elrepo的yum
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
#查看内核相关包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#安装kernel-ml.x86_64主线稳定版
yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
#重建grub2的配置文件(可选操作,如果下一步查看内核找不到该文件,执行该命令)
grub2-mkconfig -o /boot/grub2/grub.cfg
#查看可用内核
cat /boot/grub2/grub.cfg |grep menuentry
#替换刚刚查看出来的内核名字
grub2-set-default 'CentOS Linux (4.13.2-1.el7.elrepo.x86_64) 7 (Core)'
#查看内核启动项
grub2-editenv list
#重启
reboot
#查看版本
uname -r
#查看内核
rpm -qa | grep kernel
#删除内核
yum remove kernel-3.10.0-514.26.2.el7.x86_64
参考

Centos 7/6 内核版本由3.10.0 升级至 4.12.4方法

Swarm 网络连通测试

环境
  • docker for windos 17.06.2(10.0.75.1)
  • centos7.3 docker
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#manager>创建overlay网络
docker network create --driver overlay --subnet 10.0.9.0/24 my-network
#查看网络
docker network ls
#manager>创建nginx
docker service create --replicas 2 --name my-web --network my-network nginx
#查看my-web服务
docker service ps my-web
#查看my-network网络详情
docker network inspect my-network
#manager>创建busybox工具箱
docker service create --name my-busybox --network my-network busybox sleep 3000
#查看工具箱在那个节点
docker service ps my-busybox
#去工具箱的节点
docker ps
#进入工具箱
docker exec -it <工具箱的di or name> /bin/sh
#从busybox容器内部,查询DNS来查看my-web的VIP
nslookup my-web
#从busybox容器内部,使用特殊查询查询DNS,来找到my-web服务的所有容器的IP地址:
nslookup tasks.my-web
#从busybox容器内部,通过wget来访问my-web服务中运行的nginx网页服务器
wget -O- my-web
#增加实例
docker service update my-busybox --replicas 2

参考

基于Swarm的多主机容器网络

官网

1
2
3
4
5
6
7
8
9
10
#查看系统空间使用情况
free -h
#查看分区使用
df -h
#生成4G大小文件在/home目录下,取名swapflie
sudo dd if=/dev/zero of=/home/swapflie bs=1M count=4096
#把这个文件转换为swap分区
sudo /sbin/mkswap /home/swapflie
#使分区生效
sudo /sbin/swapon /home/swapflie

参考:

Docker Swarm搭建Gitlab

kubectl安装

kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes。

官方文档:Install and Set Up kubectl

window平台(需要bash on ubuntu环境)

1
2
3
4
5
6
7
8
#切换bash on Ubuntu命令
bash
#下载kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe
#退出bash
exit
#查看版本
.\kubectl.exe version

Linux平台

1
2
3
4
5
6
7
8
#下载kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
#添加权限
chmod +x ./kubectl
#设置全局命令(环境变量)
sudo mv ./kubectl /usr/local/bin/kubectl
#检查安装成功与否
kubectl version

Minikube安装

官方文档kubernetes/minikube

virtualBox

Linux

1
2
3
4
5
6
7
#安装配置minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.22.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
#查看版本
minikube version
#下载virtualbox
wget http://download.virtualbox.org/virtualbox/5.1.26/VirtualBox-5.1-5.1.26_117224_el7-1.x86_64.rpm

Windos

1
2
3
4
#安装配置minikube
curl -Lo minikube.exe https://storage.googleapis.com/minikube/releases/v0.22.1/minikube-windows-amd64.exe
#查看版本
./minikube.exe version

。。。。。放弃,转用swarm ,已卸载相关下载文件

弃坑理由:安装负杂,需要安装虚拟机,对环境要求高,学习成本高,swarm和Kubernetes对dockers的差距越来越小

Docker Swarm官网

准备工作

1
2
3
4
#centos7.3
Docker version 17.06.2-ce, build cec0b72
#win10
Docker version 17.06.2-ce, build cec0b72
  • TCP 2377 集群管理通信
  • TCP/UDP 7946 容器(container)网络发现
  • UDP 4789 容器(container)入口网络

Swarm 安装

centos manager(xuanPs)

1
2
3
4
5
6
#初始化节点
docker swarm init --advertise-addr 112.74.51.136
#echo输出如下内容,在work节点执行改命令加入改manger(windos执行)
docker swarm join --token SWMTKN-1-34egnv0ksgzg6enh47wmze0ncx90bo2218yaetm88p6s028i2s-c46n408x51lklv1n3myhmpt1a 112.74.51.136:2377
#查看节点
docker node ls

创建和删除服务

参考inspect-servicescale-servicedelete-service

docker service create --replicas 1 --name helloworld alpine ping docker.com

  • docker service create 创建服务
  • --name 服务的名字
  • --replicas 指定实例运行数量
  • alpine ping docker.com指定alpine执行ping命令
1
2
3
4
5
6
7
8
9
10
#查看运行的服务
docker service ls
#查看某服务状态
docker service ps <服务名>
#运行5个helloworld服务
docker service scale helloworld=5
#移除helloworld服务
docker service rm helloworld
#检查helloworld是否存在
docker service inspect helloworld

升级服务

docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6

  • --update-delay多个服务启动时之间的时间间隔eg:4h2m1s
参考rolling-update
1
2
3
4
5
6
7
8
9
10
#创建运行rdeis3.0.6服务
docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6
#查看redis images版本为3.0.6
docker service inspect --pretty redis
#更新redis镜像到3.0.7
docker service update --image redis:3.0.7 redis
#更新redis服务为最新镜像
docker service update --detach=false redis
#查看是否为3.0.7
docker service ps redis

关闭一个节点

参考drain-node
1
2
3
4
5
6
7
8
#关闭moby节点Availability为drain
docker node update --availability drain moby
#查看rdeis服务还是三个只不过在其他机器上
docker service ps redis
#查看moby节点状态
docker node inspect --pretty moby
#开启moby节点
docker node update --availability active moby

使用群组路由模式

参考Use swarm mode routing mesh
1
2
3
{
"registry-mirrors": ["https://rq98iipq.mirror.aliyuncs.com"]
}

MyBatis plugin插件安装步骤(弃用,重新打开失效)

  1. 安装setting->Plugins->Browse Respositories…->MyBatis plugin

  2. 重启

  3. 执行下面代码生成KEY和RESULT

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import java.security.InvalidKeyException;
    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.NoSuchAlgorithmException;
    import java.security.interfaces.RSAPrivateKey;
    import java.security.interfaces.RSAPublicKey;

    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.NoSuchPaddingException;

    class Main {

    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
    KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA");
    keygen.initialize(512);
    KeyPair kp = keygen.generateKeyPair();
    RSAPrivateKey privateKey = (RSAPrivateKey)kp.getPrivate();
    RSAPublicKey publicKey = (RSAPublicKey)kp.getPublic();
    System.out.println("KEY:\n" + bytesToHexString(publicKey.getEncoded()) + "\n");
    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE,privateKey);
    System.out.println("RESULT:\n" + bytesToHexString(cipher.doFinal("ilanyu".getBytes())) + "\n");
    }

    private static String bytesToHexString(byte[] src){
    StringBuilder stringBuilder = new StringBuilder("");
    if (src == null || src.length <= 0) {
    return null;
    }
    for (byte aSrc : src) {
    int v = aSrc & 0xFF;
    String hv = Integer.toHexString(v);
    if (hv.length() < 2) {
    stringBuilder.append(0);
    }
    stringBuilder.append(hv);
    }
    return stringBuilder.toString();
    }
    }
  4. 把key和result填到C:\Users\{用户}\.IntelliJIdea2017.2\config\options\mybatis.xml中对应的字段