平台部署
----
######## 准备物理服务器(最小配置3台)
1. db - 启动 mongo，rabbitmq （2核4G内存）
2. ap - 启动 Admin实例 （1核1G）
3. controller - 启动服务包括 haproxy，salt，bind（1核1G 2M带宽）


注释：
可以根据自己环境，选择设定代理服务器，如（yum安装使用该代理）
export http_proxy=10.10.106.231:3128
export https_proxy=10.10.106.231:3128

######## 初始化服务器（安装Docker工具）
# 安装
1. install docker（1.8.1+）
原版
# curl -sSL https://get.docker.com/ | sh
字符科技缓存
# curl -O http://dl.alphabets.cn/lib/docker-engine-1.8.3-1.el7.centos.x86_64.rpm
# yum -y install docker-engine-1.8.1-1.el7.centos.x86_64.rpm
# yum -y install libdevmapper.so.1.02
# systemctl start docker

注释：启动docker失败，可能是因为依赖的mapper为安装，
journalctl -x 查看具体原因
# yum -y install libdevmapper.so.1.02

2. install docker-compose (1.4.0+)
原版
# curl -L https://github.com/docker/compose/releases/download/VERSION_NUM/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
字符科技缓存
# curl -L http://dl.alphabets.cn/lib/docker-compose-1.4.2 > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

注释：
依赖的包安装完成，可根据需要，去掉proxy设定。否则，所有的内部域名解析都会经由proxy指向外网
unset http_proxy
unset https_proxy


启用DokerAPI
可以使用-g参数修改docker的存放路径, 通常可以指定到挂载的外部磁盘
# vi /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H fd://
ExecStart=/usr/bin/docker daemon -g /data/docker -H tcp://0.0.0.0:2375 -H fd://
# systemctl daemon-reload
# systemctl restart docker


3. 启动ctrl
docker-compose -f controller.yml up -d
如果ap与db无法上外网，需要ctrl的haproxy做内网到外网的代理，连接字符科技的docker registry服务器
docker的内部向外的代理
----
frontend docker
    bind *:443
    default_backend docker
backend docker
    balance     roundrobin
    server      docker docker.alphabets.cn:443

################################
######## Amazon linux 初始化 docker
################################
$ sudo passwd root
$ sudo yum update -y
$ curl -fsSL https://get.docker.com/ | sh
$ sudo service docker start

$ curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
或
$ curl -L http://dl.alphabets.cn/lib/docker-compose-1.6.2 > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose


实现Docker跨主机互通
########
https://docs.docker.com/engine/userguide/networking/get-started-overlay/
http://itfish.net/article/53765.html
http://www.open-open.com/lib/view/open1455532270917.html

$docker run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap

OPTIONS
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
--cluster-advertise eth0:2375 --cluster-store consul://172-31-21-184:8500


######## 配置
1. 配置dns，让机器互通（使用名称来连接，使用的hostname）
starwall.org
如
controller IN A 10.144.161.119
db         IN A 10.165.46.250
salt       CNAME controller
mq         CNAME db

2. 指定dns的地址
ap服务器为例
# vi /etc/resolv.conf
nameserver 10.10.106.231
search alphabets.cn

######## 启动db
docker-compose -f storage.yml up -d

## 导入数据

## 启动Admin
docker-compose -f admin.yml up -d

## 启动LB
docker-compose -f lb.yml up -d

应用程序部署
----
1.
2.

## 访问Light，修改配置

-----------------------------------

storage 负责数据存储
----
rabbitmq
mongo
mysql


controller 控制器（支撑平台运行的先决条件）
----
salt
bind
haproxy (mongo, mq, salt)

lb 负载均衡
----
varnish
lb

manager 管理服务
----
squid
stunnel
bsquid

zabbix
docker
site (docker, git, mq, zabbix)




=============== TODO ===================
- bind
 搜索不到时，继续向上搜索
 A 记录 Chan记录区分
 明确，外部DNS解析，内部DNS解析
 设定 DNS从 服务器



#### 放docker到其他目录
# vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/docker daemon -g /data/docker -H fd://
# systemctl daemon-reload
# systemctl start docker


=============== TODO ===================
#### Hadoop 操作

#### 1. zookeeper
# mkdir -p /data/zookeeper
# echo 1 >> /data/zookeeper/myid
# zkServer.sh start

#### 2. 格式化HDFS
# hdfs namenode -format

#### 3. 启动hdfs
# start-dfs.sh

#### 4. 启动yarn
# start-yarn.sh


#### 5. 启动HBase
# start-hbase.sh
# 启动HBase Thrift 服务
# hbase-daemon.sh start thrift2

$ hbase shell
$ create "tbl", "fam"
$ put "tbl", "row1", "fam:col1", "val1"
$ get "tbl", "row1", "fam:col1"
$ delete "tbl", "row1", "fam:col1"
$ scan "tbl"


####
http://192.168.99.100:50070/ NameNode Web UI
http://192.168.99.100:50090/ Secondary NameNode Web UI
http://192.168.99.100:8088/  ResourceManager Web UI
http://192.168.99.100:16010/ HBase Web UI


####
# hdfs dfs -mkdir /sample/input
# hdfs dfs -put pg1661.txt /samples/input
# hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /samples/input /samples/output
# hdfs dfs -rm -r -f /samples/output
