0%

openvpn服务器安装

# 安装服务
yum install epel-release
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig makecache
yum install -y openvpn easy-rsa
# 找到easy-ras的安装目录
[root@localhost openvpn]# whereis easy-rsa
easy-rsa: /usr/share/easy-rsa
# 并拷贝到openvpn目录下
mkdir -p /etc/openvpn/easy-rsa
# 注意3.0.8版本号可能不一样
cd /usr/share/easy-rsa/3.0.8
cp -r *  /etc/openvpn/easy-rsa

openvpn服务端配置

# 进入easy-rsa目录
cd /etc/openvpn/easy-rsa
# 将easy-rsa变量模板拷入到当前目录
find / -type f -name "vars.example"|xargs cp -t . && mv vars.example vars
[root@localhost easy-rsa]# ll
total 100
-rwxr-xr-x. 1 root root 76946 Mar 18 16:26 easyrsa
-rw-r--r--. 1 root root  4616 Mar 18 16:26 openssl-easyrsa.cnf
-rw-r--r--. 1 root root  8888 Mar 19  2022 vars
drwxr-xr-x. 2 root root   122 Mar 18 16:26 x509-types
# 修改vars主要信息,按需修改
set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "Jiangsu"
set_var EASYRSA_REQ_CITY        "Nanjing"
set_var EASYRSA_REQ_ORG         "Deri"
set_var EASYRSA_REQ_EMAIL       "wuzhiyong@deri.energy"
set_var EASYRSA_REQ_OU          "deri.org.cn"
# 创建空的pki
./easyrsa init-pki
# 创建新的CA,不使用密码,过程中直接回车
./easyrsa build-ca nopass
# 创建服务端证书
./easyrsa gen-req server nopass
# 签约服务端证书,过程中手动输入yes
./easyrsa sign server server
# 生成DH验证文件Diffie-Hellman
./easyrsa gen-dh
# 创建吊销列表
./easyrsa gen-crl
# 生成ta.key
openvpn --genkey --secret keys/ta.key
# 将所有需要的文件拷贝到/etc/openvpn/server目录下
cp keys/ta.key ../server/
cp pki/ca.crt ../server/
cp pki/dh.pem ../server/
cp pki/issued/server.crt ../server/
cp pki/private/server.key ../server/

创建服务器配置

[root@ecs-a017-0002 chuanda]# cat server.conf 
port 20016
;proto tcp
proto udp
dev tun
;dev tap
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
tls-auth /etc/openvpn/server/ta.key 0
dh /etc/openvpn/server/dh.pem
log /etc/openvpn/openvpn.log
#duplicate-cn
push "route 10.1.0.0 255.255.255.0"
server 10.1.0.0 255.255.255.0
# 在ipp.txt可以配置静态ip: client1,11.1.0.100
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
status /etc/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1

创建openvpn启停脚本,start.sh

#!/bin/bash
CD_OVPN_PNUM=`ps -ef|grep "openvpn /etc/openvpn/server.conf"|grep -v grep|wc -l`
if [ $CD_OVPN_PNUM -le 0 ]; then
   openvpn /etc/openvpn/chuanda/server.conf &
fi

stop.sh

#!/bin/bash
ps -ef|grep "openvpn /etc/openvpn/server.conf"|grep -v grep|awk '{print$2}'|xargs kill -9

创建客户端证书

# 生成客户端证书
./easyrsa build-client-full client_name nopass

创建openvpn客户端文件

client
nobind
dev tun
remote-cert-tls server
remote 服务器IP 端口 udp
<key>
<!-- 客户端私钥 -->
</key>
<cert>
<!-- 客户端证书 -->
</cert>
<ca>
<!-- ca.crt -->
</ca>
key-direction 1
<tls-auth>
<!-- ta.key -->
</tls-auth>

遇到的问题

A: VERIFY ERROR: depth=1, error=certificate is not yet valid
or error 9 at 1 depth lookup:certificate is not yet valid
B: VERIFY ERROR: depth=0, error=certificate signature failure
C: error 7 at 0 depth lookup:certificate signature failure

解决办法:主要是由于服务器时区设置不对,客户端时间比服务器时间早导致.

思维导图

用markdown编写思维导图神器markmap.

安装markmap

安装完成后,正常编写markdown文件,点击右上角open as markmap,也可以导出.

说明

krew安装

# 1.安装git
yum -y install git
# 2.安装krew
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)
# 3.配置环境变量:.bashrc或者其它位置配置
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

krew快速开始

# 1.更新插件列表
kubectl krew update
# 2.查看插件列表
kubectl krew search
# 3.安装插件
kubectl krew install xxxxx
# 4.卸载插件
kubectl krew uninstall xxxxx

插件推荐

  • sniff : 抓包工具
# 保存文件,可以用wireshark分析
kubectl -n test sniff website-7d7d96cdbf-6v4p6 -o test.pcap
# 明文查看
kubectl -n test sniff website-7d7d96cdbf-6v4p6 -o -
# 抓取时过滤
kubectl -n test sniff website-7d7d96cdbf-6v4p6 -f "port 80"

开启慢查询日志

-- 查询慢查询日志开启状态
mysql> show variables like 'slow_query%';
+---------------------+-------------------------------+
| Variable_name       | Value                         |
+---------------------+-------------------------------+
| slow_query_log      | ON                            |
| slow_query_log_file | /var/lib/mysql/data3-slow.log |
+---------------------+-------------------------------+
2 rows in set
-- 开启慢查询日志记录
set global slow_query_log=1;
-- 查询慢查询时间
mysql> show variables like 'long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
-- 修改慢查询时间,修改后需要重新建立会话才能看到最新设置的值
set global long_query_time=5;

慢查询输出

-- 查看默认输出,默认输出到文件,性能较高
mysql> show variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set
-- 可以设置输出到表
set global log_output='TABLE';
select * from mysql.slow_log;

其它配置

-- 开启这个配置,可以将未使用索引的查询也记录到日志
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)
-- 开启配置
mysql> set global log_queries_not_using_indexes=1;

获取istio-proxy所有配置

kubectl -n test exec auhss-v1-769dc687ff-479r4 -c istio-proxy -- curl http://localhost:15000/config_dump > test.json

配置istio-proxy日志级别为debug

# -n 名空间
# server-v1-6dfd6b9846-c2ch6 容器名
kubectl -n mgec  exec server-v1-6dfd6b9846-c2ch6  -c istio-proxy -- curl -XPOST -s -o /dev/null http://localhost:15000/logging?level=debug
# 通过pod注解方式设置日志级别
template:
    metadata:
      annotations:
        sidecar.istio.io/logLevel: debug

查看Prometheus收集的istio指标

istio_requests_total{response_flags="UC", response_code="503", reporter="destination"}

简介

  • Kubernetes的高可用持久化存储
  • 简单的增量快照和备份
  • 跨集群灾难恢复

安装环境要求

# 运行这个命令检查环境
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.2.3/scripts/environment_check.sh | bash
# 所有节点安装必要依赖
yum install iscsi-initiator-utils
yum install nfs-utils
yum install jq -y
# 使用helm安装Longhorn
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace
kubectl -n longhorn-system get pod

查看charts默认配置:helm inspect values longhorn/longhorn
修改默认值:helm install longhorn longhorn/longhorn –namespace longhorn-system –create-namespace –set persistence.defaultClassReplicaCount=1

使用

直接在Longhorn-UI上操作使用

设置备份URL

longhorn备份PV目前支持s3nfs,打开UI选择Setting,选择General,下拉选择Backup Target,填写NFS服务器地址,格式nfs://172.16.100.13:/data/nfs.