php zookeeper配置管理应用实践

来源:互联网 发布:手写字体软件 编辑:程序博客网 时间:2024/05/17 23:52

需求:

在服务迁移中经常会遇到这么一个问题

像mysql配置,memcached配置,redis配置,迁移服务后各种配置信息会改变,在机器数量较多的情况下,一个一个去修改明显是不方便的,如果业务对配置信息较为敏感,则有可能因为配置修改不及时导致服务down掉。

说明来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等, Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等)

 

安装

ubuntu

wget http://download.nextag.com/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz

 

mv zookeeper-3.3.6 zookeeper

 

cd zookeeper

 

调整配置文件

mv conf/zoo_samle.cfg conf/zoo.cfg


启动zk

sudo ./bin/zkServer.sh start


查看是否安装成功,quit退出

./bin/zkCli.sh -server 127.0.0.1:2181

 

示例

下面示例中用到的Zookeeper_Example来自

https://github.com/andreiz/php-zookeeper/examples

 

1、zkMgr.php

添加一个节点到zookeeper,并把mysql配置信息添加到节点上

<?php

require_once ‘Zookeeper_Example.php’;

$zk = new Zookeeper_Example(‘127.0.0.1:2181’);

$bbs_mysql_config = array(

    ‘dbhost’ => ‘127.0.0.1’,

    ‘dbuser’ => ‘root’,

    ‘dbpwd’ => ‘root’,

    ‘dbname’ => ’test'

 );

$zk->set(‘/BBS_MYSQL_CONFIG', json_encode($bbs_mysql_config));

 

2、业务端

例如在业务信息配置脚本中,去请求zookeeper获取配置信息。

<?php

try{

    require_once ‘Zookeeper_Example.php’;

    $zk = new Zookeeper_Example(‘127.0.0.1:2181’);

    $bbs_mysql_config = json_decode($zk->get(‘/BBS_MYSQL_CONFIG’));

    $db[‘host’] = $bbs_mysql_config[‘dbhost’];

    $db[‘dbuser’] = $bbs_mysql_config[‘ dbuser’];

    $db[‘dbpwd’] = $bbs_mysql_config[‘dbpwd’];

    $db[‘dbname’] = $bbs_mysql_config[‘dbname’];

}catch(Exception e){

    echo ‘Zookeeper Server ERROR’;

    exit(1);

}

 

 

后记:

其实关于配置集中管理,我个人认为如果业务不复杂并且机器数量不多,不建议使用,因为这会使业务逻辑变得更加复杂,配置管理只是zookeeper的冰山一角,他还有更多的功能等我们深挖,如有错误,还等各位批评指证,谢谢。

0 0