ubuntu安装NFS-Server提供NFS服务

如果没有现成的NFS服务,可以利用现有服务器部署一套

安装NFS服务端

    sudo apt-get install nfs-kernel-server

编辑/etc/exports文件,增加你要提供nfs服务的路径

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

/data/charts *(rw,sync,no_subtree_check,no_root_squash)
/data/mysql *(rw,sync,no_subtree_check,no_root_squash)
/data/redis *(rw,sync,no_subtree_check,no_root_squash)

更改共享目录权限,修改为777 (目前还不清楚最低要求权限是多少)

sudo chown 777  /data/charts

重启NFS服务

sudo /etc/init.d/nfs-kernel-server restart
2019/12/26 posted in  Linux

HAProxy

 验证配置文件

    haproxy -c -f /etc/haproxy/haproxy.cfg

负载均衡配置

frontend k8s-api

  bind 0.0.0.0:6443

  log global

  mode tcp

  default_backend k8s-api-server

backend k8s-api-server

  mode tcp

  log global

  balance roundrobin

  server ucloud-bj-k8s-master-01 10.9.142.180:6443 weight 1 maxconn 1000 check inter 2000 rise 2 fall 3

  server ucloud-bj-k8s-master-02 10.9.175.27:6443 weight 1 maxconn 1000 check inter 2000 rise 2 fall 3

  server ucloud-bj-k8s-master-03 10.9.91.143:6443 weight 1 maxconn 1000 check inter 2000 rise 2 fall 3
2019/12/12 posted in  Linux

Linux 测试磁盘性能

测试场景:

100%随机,100%读, 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

100%随机,100%写, 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

100%顺序,100%读 ,4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

100%顺序,100%写 ,4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

100%随机,70%读,30%写 4K

fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

io=执行了多少M的IO

bw=平均IO带宽
iops=IOPS
runt=线程运行时间
slat=提交延迟
clat=完成延迟
lat=响应时间
bw=带宽
cpu=利用率
IO depths=io队列
IO submit=单个IO提交要提交的IO数
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小.平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率

2019/06/03 posted in  Linux

利用SoftetherVPN和Bind9穿透内网,共享局域网内部资源

写在前面

我想很多公司由于安全考虑,一些内部系统(Git仓库、OA之类)的一定是放在公司内部的服务器上,只有在公司的网络下才能够访问,但是一些公司的随着业务的发展,肯定会出现一些外地的同事(外地的办事处、研发中心、销售团队等等)这种情况,这样一来,在内部服务不迁移到外网的前提下,如何让外地的同事能访问到内网这些资源就成了一个必须要解决的问题了。
其实内网穿透有很很多种解决方案,本文只是利用SoftetherVPN以及Bind9这两个工具提供另一种解决思路。
本文所提到的解决方案有如下优点:

1. 原来的内部资源不需要额外的配置改动
2. 需要身份认证,只有拥有权限的外部人员才能访问内部资源
3. 只有加入了共享网络的内部资源才能被外部访问,没有开放共享的内部资源的无法访问
4. 可以做到通过相同的域名访问同一个内部资源
5. 通过LPTP,LPSec协议支持OS X以及iOS设备访问

当然也有如下不足:
1. 需要一台拥有公网IP的服务器作为中心服务器
2. 由于本文的解决方案是基于虚拟局域网来实现的,因此拥有局域网内一些无法回避的缺点。

原理


本解决方案利用了SoftetherVPN提供的Ad-Hoc VPN将内网服务器和外部用户通过VLAN连接在同一个局域网内,然后通过支持智能解析的DNS服务器,将域名解析到对应的虚拟局域网IP。
如果是内网用户,则直接通过DNS服务器将域名解析到内部资源对应的内网IP。

部署

本次部署大部分采用Docker方式部署,如果需要手动安装的,可以在这个网站下载对应的安装包

Docker 环境

略,不再本文讨论范围之内

安装Softether Server

  1. 拉取镜像

    siomiz/softethervpn
    
  2. 启动vpnserver

    docker run -d --cap-add NET_ADMIN \
     -p 500:500/udp \
    -p 4500:4500/udp \
    -p 1701:1701/tcp \
    -p 1194:1194/udp \
    -p 5555:5555/tcp \
    -p 443:443/tcp \
    -p 992:992 \
    siomiz/softethervpn

    记得要开放对应的端口

安装Softether ServerManger

虽然Softether 提供了mac版的安装包,但本人装完之后发现其实是套了一个wine的环境,在mac上体验极差,所以此处推荐找一个windows电脑安装vpn server manager,下载地址在此
由于是windows上的安装教程,大部分都是图片,为了不占文章篇幅,就不放在文章里介绍了,各位可以参考官网或者这篇博客

其中需要注意的是,在虚拟HUB管理页面中的虚拟NAT和虚拟DHCP服务器,点击SecureNAT,然后设置DHCP服务器的网段,以及DNS服务器为下面将要搭建的DNS服务器地址

部署DNS服务器

  1. 安装bind9

    sudo apt-get install bind9
    
  2. 增加两个视图文件,在/etc/bind/目录下
    name.2.conf

    acl "2" {
        192.168.2.0/24;
    };

    name.111.conf

    acl "111" {
        192.168.111.0/24;
    };

    两个视图文件主要是为了区分来源IP所在的网段,然后根据不同的网段返回不同的解析结果,在本解决方案当中,192.168.2.0/24网段为内网网段, 192.168.111.0/24为VPN生成的虚拟局域网的网段

  3. 新建不同网段对应的不同的解析记录文件,也在/etc/bind/目录下

    1234tv.lan-2.zone

    $TTL    604800
    @       IN      SOA      xxxx.xx. root.xxxx.xx. (
    2 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
    ;
    @ IN NS xxxx.xx.
    @ IN A 192.168.2.222
    gitlab IN A 192.168.2.84

    1234tv.lan-111.zone

    $TTL    604800
    @       IN      SOA     xxxx.xx. root.xxxx.xx. (
    2 ; Serial
    604800 ; Refresh
    86400 ; Retry
    2419200 ; Expire
    604800 ) ; Negative Cache TTL
    ;
    @ IN NS xxxx.xx.
    @ IN A 192.168.111.222
    gitlab IN A 192.168.111.84
  4. 将视图文件和解析文件写入Bind9主配置文件

    sudo vim /etc/bind/name.conf
    

    增加如下内容,声明两个视图,view_2,view_11,可以注释掉默认带的配置文件,如果你没有其他的用途的话,注意每一行后面的分号,不可缺少。

    #include "/etc/bind/named.conf.options";
    #include "/etc/bind/named.conf.local";
    #include "/etc/bind/named.conf.default-zones";
    include "/etc/bind/name.2.conf";
    view "View_2" {
    match-clients {"2";};
    zone "xxxx.xxx" IN {
    type master;
    file "xxxx.xxx-2.zone";
    allow-update {none;};
    };
    };
    include "/etc/bind/name.111.conf";
    view "View_111" {
    match-clients {"111";};
    zone "xxxx.xxx" IN {
    type master;
    file "xxxx.xxx-111.zone";
    allow-update {none;};
    };
    };
  5. 然后启动Bind9 服务

    sudo /etc/init.d/bind9 start
    
  6. 验证解析

    dig gitlab.xxx.xx @192.168.2.222
    

安装Vpn Client

所有需要共享给外部访问的内部服务器都需要安装vpn client连接上vpn server,下面的方法为linux 下docker方式部署vpn_client方法,windows端请参考这篇文章

  1. 拉取镜像

    sudo docker pull mitsutaka/softether-vpnclient
    
  2. 启动镜像连接之前创建的vpn server

    docker run -d --name=softether-vpnclient \
    --net=host --privileged \
    -e VPN_SERVER=<Softether VPN server> \
    -e VPN_PORT=<Softether VPN port> \
    -e ACCOUNT_USER=<Registered username> \
    -e ACCOUNT_PASS=<Registered password> \
    -e VIRTUAL_HUB=<Virtual Hub name> \
    -e TAP_IPADDR=<IP address/netmask> \
    mitsutaka/softether-vpnclient
    ```
    服务器端,VIRTUAL_HUB端填入之前在manager上新建的虚拟HUB名称 ,TAP_IPADDR,最好采用指定IP的方式,尤其是DNS服务器,需要固定IP地址

结束语

至此,这个简单的内网穿透方案算是部署完成,内网用户可以直接通过设置内网DNS服务器来通过域名访问内部服务器,外网用户在使用vpn clinet连接上虚拟局域网之后也能通过相同的域名访问内部服务器资源。
写这篇文章,一方面是觉得自己以后可能还会有此需求,怕自己遗忘,权且当做记录。另外也是想也可能有别的同学有这方面的需要,写出来共享一下。

2018/12/06 posted in  Linux

SoftEther VPN 部署

Server安装部署

这里找到合适的软件包

或者直接用下面这个链接

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.28-9669-beta/softether-vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz
  1. 解压完拷贝到/usr/local目录,然后make编译

    tar -zvxf softether-vpnserver-v4.28-9669-beta-2018.09.11-linux-x64-64bit.tar.gz
    mv vpnserver /usr/local/
    cd /usr/local/vpnserver
    make
  2. 启动vpnserver

    /usr/local/vpnserver start
    #/usr/local/vpnserver stop
    

    注意:SoftEther默认监听443端口,记得防火墙打开443端口

  3. 安装server manager

    点击这里查看manager设置

  4. 安装vpnclient

    拉取vpnclient镜像

    sudo docker pull mitsutaka/softether-vpnclient
    

    启动vpnclient

    docker run -d --name=softether-vpnclient \
    --net=host --privileged \
    -e VPN_SERVER=<Softether VPN server> \
    -e VPN_PORT=<Softether VPN port> \
    -e ACCOUNT_USER=<Registered username> \
    -e ACCOUNT_PASS=<Registered password> \
    -e VIRTUAL_HUB=<Virtual Hub name> \
    -e TAP_IPADDR=<IP address/netmask> \
    mitsutaka/softether-vpnclient

    例子:

    docker run -d --name=softether-vpnclient     --net=host --privileged     -e VPN_SERVER=120.132.55.152     -e VPN_PORT=443     -e ACCOUNT_USER=test     -e ACCOUNT_PASS=1234TV.com     -e VIRTUAL_HUB=1234TV   -e TAP_IPADDR=192.168.111.79/255.255.255.0 mitsutaka/softether-vpnclient
    
2018/12/05 posted in  Linux