程序文档之SwarmOps

 程序文档  Swarm  程序文档   2018-11-07 15:13 

项目:SwarmOps

说明:Docker Swarm Mode(v1.12.0+)功能封装的API和UI(Flask+Bootstrap)

GitHub:https://github.com/staugur/SwarmOps

依赖:Passport认证系统(生产必须),Redis(非必须)

注意:关键信息!

当前文档版本:Release 0.0.1,  0.0.2

声明:

当前项目暂无更新计划,针对的swarm版本大概是1.12.x,最新版本无跟进,无法保证正确性!


一:部署

###SwarmOps部署需要先部署依赖程序

###如果你是正式环境使用,请安装Passport认证系统和Redis(高可用);

###如果你是快速体验,可以不安装Passport和Redis(设置g.signin=True,使用local存储);

###下面是具体过程,如果有疑问可以在评论区提出,或者发邮件,staugur@saintic.com


1. 认证系统部署

    1.1 SwarmOps为了安全性首先要求登录状态,登录系统采用passport(简单SSO)认证,绑定全局变量g.signin(Bool),判断是否已经登录,所以此处也可以采用你自己的登录认证系统。

        部署passport,其GitHub地址是https://github.com/staugur/passport,亦可参考本站文档:https://blog.saintic.com/blog/134.html

        注意:swarmop于2018-11-07已经更新代码,适配最新版passport,所以使用此最新版需要部署passport!

        以下内容是release中代码,不适用最新版!

        演示地址:https://swarmops.saintic.com

    1.2 自定义认证

        认证关键在与before_request时的g.auth(若不了解请参考flask文档),此值即`isLogged_in`函数返回值,所以增加自定义认证需要以下步骤:

        1.2.1 config.py

            新增GLOBAL段Authentication值,例如auth_example

        1.2.2 utils/public.py

            在大概45行isLogged_in函数中,修改代码if判断,新增一个AuthType=="auth_example"段,执行根据cookie信息做认证。

2. redis部署

########

存储多个swarm的name、ip、token等信息,可以用redis、local,如果你将数据放到redis,便可以多节点,当然步骤也麻烦一点,需要安装redis。如果单点,就用local,本地文件存储即可,省去下面redis部署过程。

########

SwarmOps多点分布部署,可以使用redis、etcd、consul等类型的kv存储服务,目前仅支持redis。

安装redis非常简单,不需要集群,单实例,默认写入0库。

第一种比较简单的方法,yum -y install redis(如果没有redis包,可以先执行yum -y install epel-release),安装完成之后用service或systemctl启动,这样默认监听127.0.0.1:6379,无密码。

第二种方法到redis.cn中文版网站文档中查询资料采用源码部署,此处,我早前有个一键部署NoSQL的脚本,GitHub地址是https://github.com/staugur/CoreWeb


3. SwarmOps部署

3.1 开发版本体验(不推荐)

[root@e50e93de4b75 ~]# yum install -y gcc gcc-c++ python-devel libffi-devel openssl-devel python-pip git
[root@e50e93de4b75 ~]# git clone https://github.com/staugur/swarmops
[root@e50e93de4b75 ~]# cd swarmops
[root@e50e93de4b75 swarmops]# pip install -r requirements.txt
### 使用redis
[root@e50e93de4b75 swarmops]# export swarmops_swarmstoragemode=redis
[root@e50e93de4b75 swarmops]# export swarmops_StorageConnection=redis://127.0.0.1:6379 (格式是"redis://redis_host:redis_port:redis_password", 其中密码可以省略, 则默认None)
### 使用local
[root@e50e93de4b75 swarmops]# export swarmops_swarmstoragemode=local
[root@e50e93de4b75 swarmops]# ./Control.sh     
SwarmOps start over.
[root@e50e93de4b75 swarmops]# ./Control.sh status
SwarmOps:
  pid: 9298
  state: running
  process start time: 2017-Jan-2 13:20:42
  process running time: 00:02
[root@e50e93de4b75 swarmops]# ps aux | grep -v grep | grep SwarmOps ; netstat -anptl | grep SwarmOps

root      9298  0.0  1.1 137000 20920 ?        S    13:20   0:00 SwarmOps                                        

tcp        0      0 0.0.0.0:10130                0.0.0.0:*                 LISTEN           9298/SwarmOps       

tcp        0      0 127.0.0.1:49804             127.0.0.1:6379             ESTABLISHED      9298/SwarmOps       

tcp        0      0 :::10130                     :::*                      LISTEN           9298/SwarmOps  

3.2 稳定版本(墙裂推荐)

3.2.1 物理机、虚拟机等

wget -c -O SwarmOps-v0.0.2.tar.gz "https://codeload.github.com/staugur/SwarmOps/tar.gz/v0.0.2"
tar zxf SwarmOps-v0.0.2.tar.gz
cd SwarmOps-0.0.2/
pip install -r requirements.txt
### 使用redis
export swarmops_swarmstoragemode=redis
export swarmops_StorageConnection=redis://127.0.0.1:6379 (格式是"redis://redis_host:redis_port:redis_password", 其中密码可以省略, 则默认None)
### 使用local
export swarmops_swarmstoragemode=local
Control.sh start

3.2.2 docker

暂不提供正式版镜像,请自行构建!


附录1, 关于SwarmOps的使用:

SwarmOps默认监听0.0.0.0:10130,打开浏览器访问你的IP:10130端口,passport验证登录后,即进入UI界面中,UI调用Api操作数据。


附录2, 关于SwarmOps Api的使用(尚未更新完毕):

https://github.com/staugur/SwarmOps/blob/master/docs/SwarmOpsApi_SwarmEngine.md


附录3,关于Nginx(tengine)的配置:

upstream SwarmOps {
    server 127.0.0.1:10130;
    check interval=3000 rise=2 fall=5 timeout=3000 type=http;
    check_http_send "GET / HTTP/1.1\r\n\r\n";
}

server {
    listen 80;
    server_name swarmops.saintic.com;
    charset utf8;
    access_log  logs/swarmops.access.log json;
    location / {
        #proxy_pass http://127.0.0.1:10130;
        proxy_pass http://SwarmOps;
        proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for ;
        proxy_set_header Host $http_host ;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    location /nstatus {
        check_status;
        access_log   off;
    }
}


点赞 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

交流分享

QQ扫一扫或点击二维码加入,群号577543189
微信扫一扫,手滑关注它
微信扫一扫,进入小程序

推荐文章

标签云集

友情链接  交换友链

推广位