<commit_before># 项目部署
整套服务项目部署流程，整套操作都在deploy目录下进行。

# 架构
![image](https://github.com/zhexiao/mnet/blob/dev/deploy/arc.png?raw=true)

# docker跨主机通信
现有机器vm1（192.168.71.148）、vm2（192.168.71.152）和vm3（192.168.71.153）。设vm1为管理主节点，其余为工作节点。

跨主机
```
在 148 上创建manager
$ docker swarm init --advertise-addr 192.168.71.148

在其余的工作机器加入节点
$ docker swarm join --token <PASSWORD> 192.168.71.148:2377

如果找不到了加入命令，则可以在管理节点输入
$ docker swarm join-token worker
```

网络
```
创建网络，--attachable  是为了swarm集群外的容器能够加入该网络
$ docker network create -d overlay --attachable zxnet

148机器（manager）测试alpine1 
$ docker run -it --name alpine1 --network zxnet alpine

152机器(worker)测试alpine2，注意 -d 表示detached 
$ docker run -it --name alpine2 --network zxnet alpine

互相启动ping命令
$ ping alpine2
```

# Zookeeper
```
$ docker run \
    --name zoo1 \
    --restart always \
    --network zxnet \
    --detach \
    zookeeper:3.5.5 
```

# Kafka
```
$ wget -P ./pkg http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz

$ docker build -t java-base -f Dockerfile-java-base .
$ docker build -t kafka -f Dockerfile-kafka .

$ docker run \
    --name kf1 \
    --publish 9092:9092 \
    --link=zoo1:zoo1 \
    --env KAFKA_BROKER_ID=1 \
    --env KAFKA_LISTENERS=PLAINTEXT://:9092 \
    --env KAFKA_ZOOKEEPER_CONNECT=zoo1:2181 \
    --restart always \
    --network zxnet \
    --detach \
    kafka 
```

测试
```
$ docker exec -it kf1 /kafka/kafka_2.12-2.3.0/bin/kafka-topics.sh --create --zookeeper zoo1:2181 --replication-factor 1 --partitions 1 --topic mnet
$ docker exec -it kf1 /kafka/kafka_2.12-2.3.0/bin/kafka-topics.sh --describe --zookeeper zoo1:2181 --topic mnet

$ docker exec -it kf1 /kafka/kafka_2.12-2.3.0/bin/kafka-console-consumer.sh --bootstrap-server kf1:9092 --topic mnet --from-beginning
$ docker exec -it kf1 /kafka/kafka_2.12-2.3.0/bin/kafka-console-producer.sh --broker-list kf1:9092 --topic mnet
```

# Elasticsearch
```
$ docker run \
    --name es1 \
    --publish 9200:9200 \
    --publish 9300:9300 \
    --env "discovery.type=single-node" \
    --restart always \
    --network zxnet \
    --detach \
    elasticsearch:6.4.3
```<commit_msg>add spark jar<commit_after># 项目部署
整套服务项目部署流程，整套操作都在deploy目录下进行。

# 架构
![image](https://github.com/zhexiao/mnet/blob/dev/deploy/arc.png?raw=true)

# docker跨主机通信
现有机器vm1（192.168.71.148）、vm2（192.168.71.152）和vm3（192.168.71.153）。设vm1为管理主节点，其余为工作节点。

跨主机
```
在 148 上创建manager
$ docker swarm init --advertise-addr 192.168.71.148

在其余的工作机器加入节点
$ docker swarm join --token <PASSWORD>za<PASSWORD>gy<PASSWORD> 192.168.71.148:2377

如果找不到了加入命令，则可以在管理节点输入
$ docker swarm join-token worker
```

网络
```
创建网络，--attachable  是为了swarm集群外的容器能够加入该网络
$ docker network create -d overlay --attachable zxnet

148机器（manager）测试alpine1 
$ docker run -it --name alpine1 --network zxnet alpine

152机器(worker)测试alpine2，注意 -d 表示detached 
$ docker run -it --name alpine2 --network zxnet alpine

互相启动ping命令
$ ping alpine2
```

# Zookeeper
```
$ docker run \
    --name zoo1 \
    --restart always \
    --network zxnet \
    --detach \
    zookeeper:3.5.5 
```

# Kafka
```
$ wget -P ./pkg http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz

$ docker build -t java-base -f Dockerfile-java-base .
$ docker build -t kafka -f Dockerfile-kafka .

$ docker run \
    --name kf1 \
    --publish 9092:9092 \
    --link=zoo1:zoo1 \
    --env KAFKA_BROKER_ID=1 \
    --env KAFKA_LISTENERS=PLAINTEXT://:9092 \
    --env KAFKA_ZOOKEEPER_CONNECT=zoo1:2181 \
    --restart always \
    --network zxnet \
    --detach \
    kafka 
    
$ docker run \
    --name kf2 \
    --publish 9093:9092 \
    --link=zoo1:zoo1 \
    --env KAFKA_BROKER_ID=2 \
    --env KAFKA_LISTENERS=PLAINTEXT://:9092 \
    --env KAFKA_ZOOKEEPER_CONNECT=zoo1:2181 \
    --restart always \
    --network zxnet \
    --detach \
    kafka 
```

测试
```
$ docker exec -it kf1 /kafka/kafka_2.11-2.2.0/bin/kafka-topics.sh --create --zookeeper zoo1:2181 --replication-factor 2 --partitions 2 --topic mnet
$ docker exec -it kf1 /kafka/kafka_2.11-2.2.0/bin/kafka-topics.sh --describe --zookeeper zoo1:2181 --topic mnet

$ docker exec -it kf1 /kafka/kafka_2.11-2.2.0/bin/kafka-console-consumer.sh --bootstrap-server kf1:9092,kf2:9092 --topic mnet --from-beginning
$ docker exec -it kf1 /kafka/kafka_2.11-2.2.0/bin/kafka-console-producer.sh --broker-list kf1:9092,kf2:9092 --topic mnet

$ docker exec -it kf1 /kafka/kafka_2.11-2.2.0/bin/kafka-topics.sh --delete --zookeeper zoo1:2181 --topic mnet 
```

# Elasticsearch
```
$ docker run \
    --name es1 \
    --publish 9200:9200 \
    --publish 9300:9300 \
    --env "discovery.type=single-node" \
    --restart always \
    --network zxnet \
    --detach \
    elasticsearch:6.4.3
```
{'fraction_non_alphanumeric': 0.15729144555296115, 'fraction_numerical': 0.08596900870303545, 'mean_word_length': 2.7190213101815313, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 10, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1305260', 'n_tokens_mistral': 2434, 'n_tokens_neox': 2234, 'n_words': 369}