开源管理的Saltstack Web UI(持续更新)

koyo 发表了文章 • 0 个评论 • 2380 次浏览 • 2016-04-24 23:33 • 来自相关话题

项目名称:dzhops
[]使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]
 
环境:
[]RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]
 
dzhops更新记录:
[]> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]
 
功能介绍
1.登陆页面 




2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 




3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 




4.SaltStack 可完成如下功能:
[]服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]












5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 




6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。








更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops 查看全部
项目名称:dzhops
    []使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]

 
环境:
    []RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]

 
dzhops更新记录:
    []> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]

 
功能介绍
1.登陆页面 
login.png

2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 
index.png

3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 
asset.png

4.SaltStack 可完成如下功能:
    []服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]

deploy.png

deploy_show.png

deploy_show_success.png

5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 
manage.png

6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。
record.png

record_detail.png

更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops

开源运维管理平台OpsSam

koyo 发表了文章 • 0 个评论 • 2969 次浏览 • 2016-04-18 13:58 • 来自相关话题

基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包pip install -r requirements.txt2、epel源rpm安装包mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-13、其他接口a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-114、启动数据库a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"5、设置djangoopsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py
 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80
 四、启动cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start
五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
























项目地址:https://github.com/MorningSong/opsSAM 查看全部
基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
一、基本环境​
os: Centos 6.6 x86_64
python: 2.6.6
 
二、依赖关系
1、python依赖包
pip install -r requirements.txt
2、epel源rpm安装包
mysql-5.5.19
subversion-1.6.11-10
rabbitmq-server-3.1.5-1
cobbler-2.6.3-1
3、其他接口
a)cobbler服务器
cobbler-2.6.3-1.el6.noarch
cobbler-web-2.6.3-1.el6.noarch

b)saltstack服务器
salt 2014.7.2
salt-api-2014.7.2

c)svn服务器
subversion-1.6.11-11
4、启动数据库
a)创建登陆用户
/etc/init.d/mysqld start
mysqladmin -uroot password opsSAM

b)创建数据库:
mysql -uroot -popsSAM -e "create database opsSAM;"

c)生成项目数据表:
cd /your/sitepath/
python manage.py syncdb

d)创建初始登陆用户admin(密码admin):
mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"
5、设置django
opsSAM.opsSAM.settings.py
opsSAM.opsSAM.settings_local.py

 三、django生产环境安装(非必须)
推荐nginx+uwsgi(略)
安装后按照实际情况修改scripts/supervisord.conf相关django配置
[program:django]

command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80

 四、启动
cp scripts/supervisord.conf /etc/
cp scripts/supervisord /etc/init.d/
chmod 755 /etc/init.d/supervisord
/etc/init.d/supervisord start

五、访问地址
opsSAM前台: http://your_ip/
opsSAM后台: http://your_ip/admin
rabbitmq: http://your_ip:15672/
celery flower: http://your_ip:5555/
supervisor: http://your_ip:9001/
 
六、Demo效果图
login.png

index.jpg

system_install.png

exec_command.png

deploy_app.png

deploy_code.png

项目地址:https://github.com/MorningSong/opsSAM

开源微信云端机器人

being 发表了文章 • 0 个评论 • 1359 次浏览 • 2016-03-02 22:27 • 来自相关话题

云端框架v1.0Alpha版​






框架引擎

Python 2.7.9 、Cherrypy 3.6.0 、Mako 1.0.1 本次架构纯属个人兴趣所致,如今开发各类机器人也并非难事,本框架基于最简单的Wechat Http协议所开发 网上关于Wechat的 Web协议分析的资料也不少。这里不再赘述。这套协议分析就很不错web 微信与基于node的微信机器人实现 实现的原理都一样,只过是实现的语言不一样而已,笔者用Node做过基于PCQQ协议的消息互通,简单的写了一个简单的Demo,个人对人工智能比较感兴趣啦~ 由于个人能力有限,工作也比较繁忙,所以就将这个云端框架贡献出来~ 希望有志同道合的同仁一起来维护这个框架。在实际测试中感觉Cherrypy这个框架效率还是蛮低的~后来想用Tornado非阻塞的Python web框架 个人精力有限~~

协议分析

[]WEB协议也就是网页版微信 web 协议有web的好处~嘎嘎我就不说了避免XX00[/][]Android/ios协议 市面上很少见。[/]








PC协议 ...........
[]如何使用 搭建好Python环境安装好对应模块 run CherryWeChatSwever.py 代码写的比较渣渣~啦~ 对于新手熟悉CherryPy框架也是不错想选择~[/]

效果展示






























ChangeLog 






开源协议

GPL项目地址:https://github.com/lu4kyd0y/WeChat-Cloud-Robot 查看全部


云端框架v1.0Alpha版​


weiroto.png


框架引擎


Python 2.7.9 、Cherrypy 3.6.0 、Mako 1.0.1 
本次架构纯属个人兴趣所致,如今开发各类机器人也并非难事,本框架基于最简单的Wechat Http协议所开发 网上关于Wechat的 Web协议分析的资料也不少。这里不再赘述。这套协议分析就很不错web 微信与基于node的微信机器人实现 实现的原理都一样,只过是实现的语言不一样而已,笔者用Node做过基于PCQQ协议的消息互通,简单的写了一个简单的Demo,个人对人工智能比较感兴趣啦~ 由于个人能力有限,工作也比较繁忙,所以就将这个云端框架贡献出来~ 希望有志同道合的同仁一起来维护这个框架。在实际测试中感觉Cherrypy这个框架效率还是蛮低的~后来想用Tornado非阻塞的Python web框架 个人精力有限~~


协议分析


    []WEB协议也就是网页版微信 web 协议有web的好处~嘎嘎我就不说了避免XX00[/][]Android/ios协议 市面上很少见。[/]

code1.png

code2.png

PC协议 ...........
    []如何使用 搭建好Python环境安装好对应模块 run CherryWeChatSwever.py 代码写的比较渣渣~啦~ 对于新手熟悉CherryPy框架也是不错想选择~[/]


效果展示


webchat1.png

webchat2.png

webchat3.png

webchat4.png

webchat5.png

webchat6.png

webchat7.png


ChangeLog 


log.png


开源协议


GPL
项目地址:https://github.com/lu4kyd0y/WeChat-Cloud-Robot

Redis高可用集群开源项目Codis介绍

koyo 发表了文章 • 0 个评论 • 1026 次浏览 • 2016-02-17 23:56 • 来自相关话题

Redis在豌豆荚的使用历程---单实例==》多实例,业务代码中做sharding==》单个Twemproxy==》多个Twemproxy==》Codis,豌豆荚自己开发的分布式Redis服务。在大规模的Redis使用过程中,他们发现Redis受限于多个方面:单机内存有限、带宽压力、单点问题、不能动态扩容以及磁盘损坏时的数据抢救。
 
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.
 
Codis 由四部分组成:
[]Codis Proxy   (codis-proxy)[/][]Codis Manager (codis-config)[/][]Codis Redis   (codis-server)[/][]ZooKeeper (coordinator)[/]
每个部分都可动态扩容.codis-proxy 是客户端连接的 Redis 代理服务, codis-proxy 本身实现了 Redis 协议, 表现得和一个原生的 Redis 没什么区别 (就像 Twemproxy), 对于一个业务来说, 可以部署多个 codis-proxy, codis-proxy 本身是无状态的. codis-config是Codis的管理工具, 支持包括, 添加/删除 Redis 节点, 添加/删除 Proxy 节点, 发起数据迁移等操作. codis-config本身还自带了一个 http server, 会启动一个 dashboard, 用户可以直接在浏览器上观察Codis集群的运行状态.codis-server是Codis项目维护的一个 Redis 分支, 基于 2.8.13 开发, 加入了 slot 的支持和原子的数据迁移指令. Codis 上层的 codis-proxy 和 codis-config 只能和这个版本的 Redis 交互才能正常运行.Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy.Codis 支持按照 Namespace 区分不同的产品, 拥有不同的 product name 的产品, 各项配置都不会冲突.
目前 Codis 已经是稳定阶段,目前豌豆荚已经在使用该系统。
架构




特性:
[]自动平衡[/][]使用非常简单[/][]图形化的面板和管理工具[/][]支持绝大多数 Redis 命令,完全兼容 twemproxy[/][]支持 Redis 原生客户端[/][]安全而且透明的数据移植,可根据需要轻松添加和删除节点[/][]提供命令行接口[/][]RESTful APIs[/]
安装:cd  /usr/local/go/src/github.com/wandoulabs/codis;./bootstrap.sh
make gotest
ln -s /usr/local/go/src/github.com/wandoulabs/codis/ /usr/local/codis操作界面展示:
Dashboard




Migrate




Slots





项目地址:https://github.com/CodisLabs/codis
项目作者:刘奇 查看全部
Redis在豌豆荚的使用历程---单实例==》多实例,业务代码中做sharding==》单个Twemproxy==》多个Twemproxy==》Codis,豌豆荚自己开发的分布式Redis服务。在大规模的Redis使用过程中,他们发现Redis受限于多个方面:单机内存有限、带宽压力、单点问题、不能动态扩容以及磁盘损坏时的数据抢救。
 
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.
 
Codis 由四部分组成:
    []Codis Proxy   (codis-proxy)[/][]Codis Manager (codis-config)[/][]Codis Redis   (codis-server)[/][]ZooKeeper (coordinator)[/]

每个部分都可动态扩容.
codis-proxy 是客户端连接的 Redis 代理服务, codis-proxy 本身实现了 Redis 协议, 表现得和一个原生的 Redis 没什么区别 (就像 Twemproxy), 对于一个业务来说, 可以部署多个 codis-proxy, codis-proxy 本身是无状态的.
 
codis-config是Codis的管理工具, 支持包括, 添加/删除 Redis 节点, 添加/删除 Proxy 节点, 发起数据迁移等操作. codis-config本身还自带了一个 http server, 会启动一个 dashboard, 用户可以直接在浏览器上观察Codis集群的运行状态.
codis-server是Codis项目维护的一个 Redis 分支, 基于 2.8.13 开发, 加入了 slot 的支持和原子的数据迁移指令. Codis 上层的 codis-proxy 和 codis-config 只能和这个版本的 Redis 交互才能正常运行.
Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令都会通过 ZooKeeper 同步到各个存活的 codis-proxy.
Codis 支持按照 Namespace 区分不同的产品, 拥有不同的 product name 的产品, 各项配置都不会冲突.
目前 Codis 已经是稳定阶段,目前豌豆荚已经在使用该系统。
架构
codis_arch.png

特性:
    []自动平衡[/][]使用非常简单[/][]图形化的面板和管理工具[/][]支持绝大多数 Redis 命令,完全兼容 twemproxy[/][]支持 Redis 原生客户端[/][]安全而且透明的数据移植,可根据需要轻松添加和删除节点[/][]提供命令行接口[/][]RESTful APIs[/]

安装:
cd  /usr/local/go/src/github.com/wandoulabs/codis;./bootstrap.sh
make gotest
ln -s /usr/local/go/src/github.com/wandoulabs/codis/ /usr/local/codis
操作界面展示:
Dashboard
codis_group.png

Migrate
snapshot_migrate.png

Slots
slots.png


项目地址:https://github.com/CodisLabs/codis
项目作者:刘奇


开源分布式数据库Mysql中间件Mycat

chris 发表了文章 • 1 个评论 • 2913 次浏览 • 2016-01-09 19:54 • 来自相关话题

什么是MYCAT

[]一个彻底开源的,面向企业应用开发的大数据库集群[/][]支持事务、ACID、可以替代MySQL的加强版数据库[/][]一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群[/][]一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server[/][]结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品[/][]一个新颖的数据库中间件产品[/]

Mycat特性

[]支持SQL92标准[/][]遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。[/][]基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster。[/][]支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster[/][]基于Nio实现,有效管理线程,高并发问题。[/][]支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。[/][]支持2表join,甚至基于caltlet的多表join。[/][]支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。[/][]支持多租户方案。[/][]支持分布式事务(弱xa)。[/][]支持全局序列号,解决分布式下的主键生成问题。[/][]分片规则丰富,插件化开发,易于扩展。[/][]强大的web,命令行监控。[/][]支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。[/][]支持密码加密[/][]支持IP白名单[/][]支持SQL黑名单、sql注入攻击拦截[/][]集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。[/]

Mycat架构






Mycat高可用方案


















Mycat监控

[]支持对Mycat、Mysql性能监控[/][]支持对Mycat的JVM内存提供监控服务[/][]支持对线程的监控[/][]支持对操作系统的CPU、内存、磁盘、网络的监控[/]









目标

低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
1.5版本架构





长期规划2.0

[]完全实现分布式事务,完全的支持分布式。[/][]通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。[/][]通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。[/][]支持基于zookeeper的主从切换及Mycat集群化管理。[/][]通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。[/][]接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。[/][]通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议。[/]

优势

基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。
MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。

Mycat关注

老外都开始关注Mycat了!





Mycat官方论坛:http://i.mycat.io/forum.php
Mycat Github:https://github.com/MyCATApache
Mycat权威指南第一版_V1.5.1:http://pan.baidu.com/s/1i3SFOpf 查看全部


什么是MYCAT


    []一个彻底开源的,面向企业应用开发的大数据库集群[/][]支持事务、ACID、可以替代MySQL的加强版数据库[/][]一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群[/][]一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server[/][]结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品[/][]一个新颖的数据库中间件产品[/]


Mycat特性


    []支持SQL92标准[/][]遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。[/][]基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster。[/][]支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster[/][]基于Nio实现,有效管理线程,高并发问题。[/][]支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。[/][]支持2表join,甚至基于caltlet的多表join。[/][]支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。[/][]支持多租户方案。[/][]支持分布式事务(弱xa)。[/][]支持全局序列号,解决分布式下的主键生成问题。[/][]分片规则丰富,插件化开发,易于扩展。[/][]强大的web,命令行监控。[/][]支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。[/][]支持密码加密[/][]支持IP白名单[/][]支持SQL黑名单、sql注入攻击拦截[/][]集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。[/]


Mycat架构


mycat_arch.png


Mycat高可用方案


mysql_ha1.png

mysql_ha2.png

mysql_ha3.png

mycat_ha4.png


Mycat监控


    []支持对Mycat、Mysql性能监控[/][]支持对Mycat的JVM内存提供监控服务[/][]支持对线程的监控[/][]支持对操作系统的CPU、内存、磁盘、网络的监控[/]

mycateye1.png

mycateye2.png


目标


低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
1.5版本架构
mycat2_0.png


长期规划2.0


    []完全实现分布式事务,完全的支持分布式。[/][]通过Mycat web(eye)完成可视化配置,及智能监控,自动运维。[/][]通过mysql 本地节点,完整的解决数据扩容难度,实现自动扩容机制,解决扩容难点。[/][]支持基于zookeeper的主从切换及Mycat集群化管理。[/][]通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。[/][]接入Spark等第三方工具,解决数据分析及大数据聚合的业务场景。[/][]通过Mycat智能优化,分析分片热点,提供合理的分片建议,索引建议,及数据切分实时业务建议。[/]


优势


基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了MYCAT的产品质量。
MYCAT并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。


Mycat关注


老外都开始关注Mycat了!
catmycat.png


Mycat官方论坛:http://i.mycat.io/forum.php
Mycat Github:https://github.com/MyCATApache
Mycat权威指南第一版_V1.5.1:http://pan.baidu.com/s/1i3SFOpf


docker web化管理

Something 发表了文章 • 4 个评论 • 3767 次浏览 • 2016-01-05 18:03 • 来自相关话题

背景

目前很多公司都在使用docker,docker也是一种趋势,我们公司也在使用docker,所以我也跟着学习使用docker,根据基本需求,结合api做了一个web程序

实验环境

本次试验使用两台实体机做模拟docker集群,一台虚拟机做docker镜像服务器,一台虚拟机做web管理机
系统软件环境及版本:
selinux disabled
iptables -F
三台docker机器系统使用centos7.1,两台模拟机群docker机软件docker+pipework+openswitch+etcd+dhcp,docker镜像服务器跑了一个registry容器提供镜像服务
Web管理机使用ubuntu,python+django+uwsgi原理图:




 
程序流程图:





原理

通过web界面创建删除容器和镜像,web服务器通过api操作三台docker机器,创建容器时通过dhcp获取ip,pipework给容器附上获取的ip,并把容器信息写入etcd库中,由于容器重启后ip消失,我通过监控脚本给启动没有ip的容器重新附上ip。容器支持ssh,有好处也有风险。
网络这块我是用交换机提供的网段,容器使用的ip和实体机在同一valn,你也可以一个集群使用一个valn,这里我是用同一valn。容器ip可以从交换机dhcp获取,不懂交换机,我直接用一台docker实体机起了dhcp服务,为该段提供dhcp服务。

安装

1.1 docker集群节点两台机器软件一样,我就以AB区别,软件基本一样,A多了一个dhcp,没有使用交换机提供dhcp1.2 安装openswitch:如果后期不想在docker集群中划分vlan,可以使用系统自带的brctl命令创建桥接网卡,下面创建桥接网卡的脚本相应的变一下,ovs-vsctl改为brctl
yum install gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool
wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz

tar zxvf openvswitch-2.3.1.tar.gz
mkdir -p ~/rpmbuild/SOURCES
cp openvswitch-2.3.1.tar.gz ~/rpmbuild/SOURCES/
sed 's/openvswitch-kmod, //g' openvswitch-2.3.1/rhel/openvswitch.spec > openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec

rpmbuild -bb --without check openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
#之后会在~/rpmbuild/RPMS/x86_64/里有2个文件
-rw-rw-r-- 1 ovswitch ovswitch 2013688 Jan 15 03:20 openvswitch-2.3.1-1.x86_64.rpm
-rw-rw-r-- 1 ovswitch ovswitch 7712168 Jan 15 03:20 openvswitch-debuginfo-2.3.1-1.x86_64.rpm

yum localinstall ~/rpmbuild/RPMS/x86_64/openvswitch-2.3.1-1.x86_64.rpm

systemctl enable openvswitch
systemctl start openvswitch1.3 下载pipework:git clone https://github.com/jpetazzo/pipework.git
chmod +x pipework
cp pipework /usr/bin/pipework1.4 网卡配置
脚本下载地址在节点机器上
pwd
/root
check_modify_container.py create_docker_container_use_dhcp_ip.sh openvswitch_docker.sh
#openvswitch_docker.sh 是网卡初始化脚本
#create_docker_container_use_dhcp_ip.sh 是创建容器时会调用的脚本
#check_modify_container.py 容器ip监控脚本
crontab -e
[i]/5 [/i] [i] [/i] * python /root/check_modify_container.py #监控脚本每五分钟执行一次

em1 为管理网段ip
Ovs1桥接在em2上,为docker内网网段ip
配置网卡,这里使用桥接

cat openvswitch_docker.sh
#!/bin/bash
#删除docker测试机
#docker rm `docker stop $(docker ps -a -q)`
#删除已有的openvswitch交换机
ovs-vsctl list-br|xargs -I {} ovs-vsctl del-br {}
#创建交换机
ovs-vsctl add-br ovs1
#把物理网卡加入ovs1
ovs-vsctl add-port ovs1 em2
ip link set ovs1 up
ifconfig em2 0
ifconfig ovs1 192.168.157.21 netmask 255.255.255.0

chmod +x openvswitch_docker.sh
sh openvswitch_docker.sh

也可以写到配置文件中
我的em1为管理网卡10.0.0.21
A机器中安装dhcp,集群中一台机器配置dhcp就可以了,网段根据你的环境改变

yum install -y dhcp
vim /etc/dhcp/dhcpd.conf
log-facility local7;
ddns-update-style none;

subnet 192.168.157.0 netmask 255.255.255.0 {
range 192.168.157.100 192.168.157.200;
option domain-name-servers 202.106.0.20;
option routers 192.168.157.1;
option broadcast-address 192.168.157.255;
default-lease-time 80000;
max-lease-time 80000;
}
systemctl enable dhcpd
systemctl start dhcpd1.5 安装dockeryum install -y docker
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.46.130:5000 -b=none -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
#指定镜像服务器为192.168.46.130,net使用none模式,监听2375端口,这个端口提供api访问的
systemctl start docker.service
systemctl enable docker.service1.6 Etcd安装yum install libffi libffi-devel python-devel
yum -y install epel-release
yum -y install python-pip
yum install etcd -y
vim /etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
[size=16]#这里etcd我没有做成集群,每台docker机的数据就保存在本机的etcd库中,不与其他节点同步,也不需要提供其他节点访问,这里设置监听本机[/size]
systemctl enable etcd
systemctl start etcd2.1 docker镜像服务器镜像服务器在安装配置完docker后,从官网pull下来一个registry镜像,启动创建一个镜像服务器容器
docker search registry
docker pull docker.io/registry
docker run --restart always -d -p 5000:5000 -v /opt/data/registry:/tmp/registry docker.io/registry安装docker请重复1.5
3.1  web服务器
Django web程序下载地址Web服务器系统我用的ubuntu,主要是安装软件简单,源及软件更新比较快
[quote]>> import django
>>> django.VERSION
(1, 7, 1, 'final', 0)这是我的django版本
apt-get install mysql-server mysql-client
apt-get install python-pip
pip install Django==1.7.1 #你也可以安装最新版本,不确定我写的程序能否正常运行
apt-get install python-mysqldb
pip install docker-py #要调用docker api,所以要安装相关python包
apt-get install curl
apt-get install mysql-server
apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev
apt-get install python-paramiko #web程序中也会用到curl和paramiko
git clone https://github.com/SomethingCM/Web-for-docker.git 到本地
cd Web-for-docker/docker_demo
vim docker_demo/settings.py
#修改数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'docker', #docker 库名
'USER': 'root', #mysql登陆用户
'PASSWORD': 'dockerchen',#密码,如果mysql设置了用户名密码可以填写,没有则为空
'HOST':'',
'PORT':'',
}
}
#修改完以后创建表
./manage.py syncdb
#执行的时候会让你设置后台root用户密码,两次输入密码创建表成功
./manage.py runserver 0.0.0.0:80

初始化设置

在浏览器中输入 IP:port/admin 设置后台 IP为web服务器的ip登陆后台admin初始化设置








 
添加仓库节点




 
添加节点












 
前台登陆












 
编写dockerfile创建镜像








 
把现有容器打包成镜像




 
创建容器



关于怎么用django+uwsgi发布网站这里就不叙述了
由于各种原因项目中途GAMEOVE了,没有具体的需求,不知道如何往下写了,有兴趣的朋友可以参考一下[/quote] 查看全部


背景


目前很多公司都在使用docker,docker也是一种趋势,我们公司也在使用docker,所以我也跟着学习使用docker,根据基本需求,结合api做了一个web程序


实验环境


本次试验使用两台实体机做模拟docker集群,一台虚拟机做docker镜像服务器,一台虚拟机做web管理机
系统软件环境及版本:
selinux disabled
iptables -F
三台docker机器系统使用centos7.1,两台模拟机群docker机软件docker+pipework+openswitch+etcd+dhcp,docker镜像服务器跑了一个registry容器提供镜像服务
Web管理机使用ubuntu,python+django+uwsgi
原理图:
yltu.png

 
程序流程图:
processlist.png


原理


通过web界面创建删除容器和镜像,web服务器通过api操作三台docker机器,创建容器时通过dhcp获取ip,pipework给容器附上获取的ip,并把容器信息写入etcd库中,由于容器重启后ip消失,我通过监控脚本给启动没有ip的容器重新附上ip。容器支持ssh,有好处也有风险。
网络这块我是用交换机提供的网段,容器使用的ip和实体机在同一valn,你也可以一个集群使用一个valn,这里我是用同一valn。容器ip可以从交换机dhcp获取,不懂交换机,我直接用一台docker实体机起了dhcp服务,为该段提供dhcp服务。


安装


1.1 docker集群节点
两台机器软件一样,我就以AB区别,软件基本一样,A多了一个dhcp,没有使用交换机提供dhcp
1.2 安装openswitch:
如果后期不想在docker集群中划分vlan,可以使用系统自带的brctl命令创建桥接网卡,下面创建桥接网卡的脚本相应的变一下,ovs-vsctl改为brctl
yum install gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool
wget http://openvswitch.org/releases/openvswitch-2.3.1.tar.gz

tar zxvf openvswitch-2.3.1.tar.gz
mkdir -p ~/rpmbuild/SOURCES
cp openvswitch-2.3.1.tar.gz ~/rpmbuild/SOURCES/
sed 's/openvswitch-kmod, //g' openvswitch-2.3.1/rhel/openvswitch.spec > openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec

rpmbuild -bb --without check openvswitch-2.3.1/rhel/openvswitch_no_kmod.spec
#之后会在~/rpmbuild/RPMS/x86_64/里有2个文件
-rw-rw-r-- 1 ovswitch ovswitch 2013688 Jan 15 03:20 openvswitch-2.3.1-1.x86_64.rpm
-rw-rw-r-- 1 ovswitch ovswitch 7712168 Jan 15 03:20 openvswitch-debuginfo-2.3.1-1.x86_64.rpm

yum localinstall ~/rpmbuild/RPMS/x86_64/openvswitch-2.3.1-1.x86_64.rpm

systemctl enable openvswitch
systemctl start openvswitch
1.3 下载pipework:
git clone https://github.com/jpetazzo/pipework.git
chmod +x pipework
cp pipework /usr/bin/pipework
1.4 网卡配置
脚本下载地址
在节点机器上
pwd
/root
check_modify_container.py create_docker_container_use_dhcp_ip.sh openvswitch_docker.sh
#openvswitch_docker.sh 是网卡初始化脚本
#create_docker_container_use_dhcp_ip.sh 是创建容器时会调用的脚本
#check_modify_container.py 容器ip监控脚本
crontab -e
[i]/5 [/i] [i] [/i] * python /root/check_modify_container.py #监控脚本每五分钟执行一次

em1 为管理网段ip
Ovs1桥接在em2上,为docker内网网段ip
配置网卡,这里使用桥接

cat openvswitch_docker.sh
#!/bin/bash
#删除docker测试机
#docker rm `docker stop $(docker ps -a -q)`
#删除已有的openvswitch交换机
ovs-vsctl list-br|xargs -I {} ovs-vsctl del-br {}
#创建交换机
ovs-vsctl add-br ovs1
#把物理网卡加入ovs1
ovs-vsctl add-port ovs1 em2
ip link set ovs1 up
ifconfig em2 0
ifconfig ovs1 192.168.157.21 netmask 255.255.255.0

chmod +x openvswitch_docker.sh
sh openvswitch_docker.sh

也可以写到配置文件中
我的em1为管理网卡10.0.0.21
A机器中安装dhcp,集群中一台机器配置dhcp就可以了,网段根据你的环境改变

yum install -y dhcp
vim /etc/dhcp/dhcpd.conf
log-facility local7;
ddns-update-style none;

subnet 192.168.157.0 netmask 255.255.255.0 {
range 192.168.157.100 192.168.157.200;
option domain-name-servers 202.106.0.20;
option routers 192.168.157.1;
option broadcast-address 192.168.157.255;
default-lease-time 80000;
max-lease-time 80000;
}
systemctl enable dhcpd
systemctl start dhcpd
1.5 安装docker
yum install -y docker
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.46.130:5000 -b=none -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
#指定镜像服务器为192.168.46.130,net使用none模式,监听2375端口,这个端口提供api访问的
systemctl start docker.service
systemctl enable docker.service
1.6 Etcd安装
yum install libffi libffi-devel python-devel
yum -y install epel-release
yum -y install python-pip
yum install etcd -y
vim /etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
[size=16]#这里etcd我没有做成集群,每台docker机的数据就保存在本机的etcd库中,不与其他节点同步,也不需要提供其他节点访问,这里设置监听本机[/size]
systemctl enable etcd
systemctl start etcd
2.1 docker镜像服务器
镜像服务器在安装配置完docker后,从官网pull下来一个registry镜像,启动创建一个镜像服务器容器
docker search registry
docker pull docker.io/registry
docker run --restart always -d -p 5000:5000 -v /opt/data/registry:/tmp/registry docker.io/registry
安装docker请重复1.5
3.1  web服务器
Django web程序下载地址
Web服务器系统我用的ubuntu,主要是安装软件简单,源及软件更新比较快
[quote]>> import django
>>> django.VERSION
(1, 7, 1, 'final', 0)这是我的django版本
apt-get install mysql-server mysql-client
apt-get install python-pip
pip install Django==1.7.1 #你也可以安装最新版本,不确定我写的程序能否正常运行
apt-get install python-mysqldb
pip install docker-py #要调用docker api,所以要安装相关python包
apt-get install curl
apt-get install mysql-server
apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev
apt-get install python-paramiko #web程序中也会用到curl和paramiko
git clone https://github.com/SomethingCM/Web-for-docker.git 到本地
cd Web-for-docker/docker_demo
vim docker_demo/settings.py
#修改数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'docker', #docker 库名
'USER': 'root', #mysql登陆用户
'PASSWORD': 'dockerchen',#密码,如果mysql设置了用户名密码可以填写,没有则为空
'HOST':'',
'PORT':'',
}
}
#修改完以后创建表
./manage.py syncdb
#执行的时候会让你设置后台root用户密码,两次输入密码创建表成功
./manage.py runserver 0.0.0.0:80


初始化设置


在浏览器中输入 IP:port/admin 设置后台 IP为web服务器的ip
登陆后台admin初始化设置
loginadmin.png

admin.png

 
添加仓库节点
addregistry.png

 
添加节点
addnode1.png

addnode2.png

shownode.png

 
前台登陆
login.png

index.png

showimages.png

 
编写dockerfile创建镜像
dockerfile.png

showcontainers.png

 
把现有容器打包成镜像
containertoimage.png

 
创建容器
createcontailer.png
关于怎么用django+uwsgi发布网站这里就不叙述了
由于各种原因项目中途GAMEOVE了,没有具体的需求,不知道如何往下写了,有兴趣的朋友可以参考一下[/quote]