关键字:debian、firefox、iceweasel、乱码
时间:2017年2月

前言
Debian下在apt中找不到名为firefox的包,但有一个包叫iceweasel,其实就是firefox。

安装
操作系统Debian8.7

root@debian:~# apt-get install iceweasel
root@debian:~# apt-get install fonts-arphic-gkai00mp   #中文字体

注:fonts-arphic-gkai00mp(简体中文楷体)可更换为fonts-arphic-gbsn00lp(简体中文宋体)。

关键字:zookeeper、集群、安装、检查
时间:2017年2月

目录

1、主机准备
2、安装配置
3、状态检查

主机准备

Debian版本8.7,Zookeeper版本3.4.5

hostname IP
zookeeper1 192.168.23.11
zookeeper2 192.168.23.12
zookeeper3 192.168.23.13

安装配置

除了myid文件内容,3台主机安装配置过程完全相同。

root@zookeeper1:~# cat /etc/hosts
...
192.168.23.11 zookeeper1
192.168.23.12 zookeeper2
192.168.23.13 zookeeper3
...
root@zookeeper1:~# apt-get install openjdk-7-jre zookeeperd
root@zookeeper1:~# cat /etc/zookeeper/conf/myid
root@zookeeper1:~# echo 1 > /etc/zookeeper/conf/myid
root@zookeeper1:~# vim /etc/zookeeper/conf/zoo.cfg
...
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
...
root@zookeeper1:~# service zookeeper restart

其他2两台主机myid文件

root@zookeeper2:~# echo 2 > /etc/zookeeper/conf/myid
root@zookeeper3:~# echo 3 > /etc/zookeeper/conf/myid

状态检查

端口检查

root@zookeeper1:~# ss -ant|grep -e 2181 -e 2888 -e 3888
...

注:
主节点的2181、2888、3888三个端口处于监听状态
从节点的2181、3888两个端口处于监听状态
从节点会链接主节点的2888端口
主节点会链接从节点的3888端口

命令检查

root@zookeeper1:~# echo stat|nc 127.0.0.1 2181
...
Mode: follower
...
root@zookeeper2:~# echo stat|nc 127.0.0.1 2181
...
Mode: leader
...
root@zookeeper3:~# echo stat|nc 127.0.0.1 2181
...
Mode: follower
...

关键词:https、免费、letsencrypt
时间:2017年2月

证书提供机构比较

沃通(wosign) StartSSL Let’s Encrypt
官网 www.wosign.com www.startssl.com letsencrypt.org
国家 中国 国外 国外
支持免费 No(以前免费) Yes Yes
Firefox Yes 报错 Yes
Safari Yes Yes Yes
自动化申请 No No Yes
推荐使用 ☆☆☆

注:以上证书本人都使用过。

Let’s Encrypt介绍

证书生成方法
https://letsencrypt.org/docs/client-options/

我使用的证书生成方法
Browser – SSL for free

关键字:hadoop、2.7.3、hdfs、集群
时间:2017年2月

前言

hadoop版本2.7.3,1台namenode和3条datanode,只启动hdfs。

目录

1.主机准备
2.安装配置
3.启动并检查
4.简单使用
5.查看集群状态

1.主机准备

1.1.IP与hosts

4台主机,debian8.7系统,如下表:

主机名 ip
namenode1 192.168.3.10
datanode1 192.168.3.11
datanode2 192.168.3.12
datanode3 192.168.3.13

所有主机hosts文件配置如下:

root@xxx:~# vim /etc/hosts
# /etc/hosts
127.0.0.1 localhost
192.168.3.10 namenode1
192.168.3.11 datanode1
192.168.3.12 datanode2
192.168.3.13 datanode3

1.2.Java环境安装配置

root@xxx:~# apt-get install openjdk-7-jdk

1.3.创建用户

root@namenode1:~# adduser hadoop
root@datanode1:~# adduser hadoop
root@datanode2:~# adduser hadoop
root@datanode3:~# adduser hadoop

1.4.配置ssh证书登录

hadoop@namenode1:~$ ssh-keygen -t rsa
...
hadoop@namenode1:~$ ssh-copy-id hadoop@namenode1
hadoop@namenode1:~$ ssh-copy-id hadoop@datanode1
hadoop@namenode1:~$ ssh-copy-id hadoop@datanode2
hadoop@namenode1:~$ ssh-copy-id hadoop@datanode3

注:
ssh-keygen生成当前用户的ssh私钥id_rsa和公钥id_rsa.pub;
ssh-copy-id添加当前用户的公钥到目标用户,相当于复制id_rsa.pub的内容到目标用户的authorized_keys中

2.安装配置

2.1.下载并解压安装包

hadoop@xxx:~$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
hadoop@xxx:~$ tar -xvf hadoop-2.7.3.tar.gz

注:所有节点执行。

2.2.修改配置文件core-site.xml

所有节点配置相同,内容如下:

# hadoop-2.7.3/etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://namenode1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
</configuration>

2.3.修改配置文件hdfs-site.xml

namenode节点,如下:

# hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

datanode节点,如下:

# hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs/data</value>
    </property>
</configuration>

注意:namenode和datanode所需要的配置是不同的。很多人把两种节点的配置内容合并在一起,每个节点使用完全相同的hdfs-site.xml,也是可行的,但不利于对配置的理解。

2.4.修改配置文件slaves

修改namenode的slaves文件,如下:

hadoop@namenode1:~/hadoop-2.7.3$ vim etc/hadoop/slaves
datanode1
datanode2
datanode3

注:datanode应该不需要配置slaves,但未做验证。

2.5.修改环境变量JAVA_HOME

hadoop@xxx:~$ vim hadoop-2.7.3/etc/hadoop/hadoop-env.sh
...
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
...
hadoop@namenode1:~/hadoop-2.7.3$ hadoop namenode -format
...
hadoop@namenode1:~/hadoop-2.7.3$ sbin/start-dfs.sh
... 

注:namenode必须format,不然namenode会启动失败。

4.简单使用

4.1.hadoop命令

hadoop@namenode1:~$ echo "abcdefghijklmnopqrstuvwxyz" > test.txt
hadoop@namenode2:~/hadoop-2.7.3$ bin/hdfs dfs -cp file:///home/hadoop/test.txt hdfs://namenode1:9000/
hadoop@namenode2:~/hadoop-2.7.3$ bin/hdfs dfs -ls hdfs://namenode1:9000/
Found 1 items
-rw-r--r--   2 hadoop supergroup      418 2017-02-18 16:19 hdfs://namenode1:9000/abcd.txt

注:”hdfs dfs …”与”hadoop fs …”效果相同,前者是更新的使用方法。

5.查看集群状态

http://namenode1:50070/

关键字:Debian、Docker、安装 时间:2017年2月

环境

Debian 8.3

安装

root@debian:~# vim /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo/ debian-jessie main

root@debian:~# curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add -
root@debian:~# apt-get update
root@debian:~# apt-get install apt-transport-https
root@debian:~# apt-get install docker.io

注:
apt-key添加第三方源的信任。
apt-transport-https包,为apt提供https支撑。

使用

root@debian:~# docker -v
Docker version 1.13.1, build 092cba3
root@debian:~# docker pull debian               # 拉取镜像
...
root@debian:~# docker run -it debian /bin/bash  # 使用debian镜像以交互方式运行一个容器
root@729e5f5b78c9:/# ls                         # 在容器中
...
root@729e5f5b78c9:/# exit                       # 退出,容器会停止运行
root@debian:~# docker ps -a

关键字:Debian8、iptables、永久保存
时间:2017年2月

前言

Debian升级至8.0后,“service iptables {start|stop|reload|…}”已经无法使用,也没有任何配置文件,经过搜索,主要找到两种方法:
方法1,/etc/network/if-pre-up.d/添加启动脚本;
方法2,安装debian官方提供的iptables-persistent包。
推荐大家使用方法2。

iptables-persistent的安装及使用

root@debian:~# apt-get install iptables-persistent
root@debian:~# service netfilter-persistent save     #保存当前iptables规则
root@debian:~# vim /etc/iptables/rules.v4            #查看修改规则文件
...
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
...
root@debian:~# service netfilter-persistent reload   #重新加载规则

注:iptables-persistent依赖于netfilter-persistent。

关键词:Debian、swap 时间:2017年2月

添加swap

root@debian:~# free -m                  #查看当前swap大小
root@debian:~# dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 #创建一个512M的文件
root@debian:~# mkswap /swapfile1        #转换为swap格式
root@debian:~# chmod 0600 /swapfile1    #修改文件权限
root@debian:~# swapon /swapfile1        #激活
root@debian:~# free -m                  #查看是否生效

停用swap

root@debian:~# swapoff /swapfile1

开机自动加载swap

root@debian:~# vim /etc/fstab
...
/swapfile1 swap swap defaults 0 0       #添加此行

关键字:debian、samba、安装、配置
时间:2018年4月

root@debian:~# apt-get install samba
root@debian:~# systemctl status smbd
root@debian:~# smbpasswd -a john    # 添加samba用户,john必须是linux已有用户
root@debian:~# pdbedit -L           # 查看已添加用户

关键词:iOS、VPN、IPSec、IKEv1、免证书、strongSwan
更新:2017年2月7日

1.前言

iOS版本升级至10.0后,VPN设置只剩下了IKEv2、IPSec、L2TP三种协议类型,PPTP协议服务端被迫升级。经过反复尝试,最终搭建成功了IPSec(IKEv1)协议的VPN服务器。

2.服务器端安装配置

系统:Debian 8.x
公网IP:111.78.143.23

root@debian:/# apt-get install strongswan libcharon-extra-plugins
root@debian:/# vim /etc/ipsec.conf
config setup
        # strictcrlpolicy=yes
        # uniqueids = no

conn CISCO-IPSec-IKEv1
        add=auto
        keyexchange=ikev1
        fregmentation=yes     # 分包重组,可提高链接成功率

        left=%any
        leftsubnet=0.0.0.0/0
        leftauth=psk

        right=%any
        rightauth=psk 
        rightauth2=xauth
        rightsourceip=192.168.29.0/24
        auto=add

root@debian:/# vim /etc/ipsec.secrets
: PSK “abcd1234”
user1 : EAP “12345678”
user2 : EAP “abcdefgh”

root@debian:/# ipsec restart

3.客户端设置

系统iOS 10
Setting -> VPN -> Add VPN Configuration
type:IPSec
Description:VPN1
Server:111.78.143.23
Acount:user1
Password:12345678
Use Certificate: OFF
Group Name:
Secret:abcd1234

4.防火墙设置

开放UDP端口500、4500,开放esp协议。

root@debian:/# iptables -A INPUT -p esp -j ACCEPT
root@debian:/# iptables -A INPUT -p udp --dport 500 -j ACCEPT
root@debian:/# iptables -A INPUT -p udp --dport 4500 -j ACCEPT

5.代理访问公网

允许转发,设置NAT。

root@debian:/# vim /etc/sysctl.conf
...
net.ipv4.ip_forward=1
... 
root@debian:/# sysctl -p
root@debian:/# iptables -t nat -A POSTROUTING -s 192.168.29.0/24 -o eth0 -j MASQUERADE

1. 解决办法

mysql> stop slave;
mysql> change master to master_heartbeat_period=60;
mysql> start slave;

mysql> show status like '%slave%';
mysql> set global slave_net_timeout = 30;
mysql> show status like '%slave%';

如上参数并不适合所有场景,请自行查询手册后设置。

2. 原因分析

此问题主要出现于主从通过Internet链接。由于主库长时间无数据写入,并且没有心跳(slave_heartbeat_period默认为0),造成主从同步数据的TCP链接处于空闲状态过久,已经不可用。在此状态下,当主库有数据需要同步时,已经无法通过当前TCP链接发送数据,从库以为并没有任何数据同步过来。造成了主从同步滞后,并且在从库上看一切正常。