Rootop 服务器运维与web架构

2022-07-20
发表者 Venus
RouterOS开启container(容器)已关闭评论

RouterOS开启container(容器)

# 官方文档
https://help.mikrotik.com/docs/display/ROS/Container

提示:
容器功能只支持arm64和x86架构
需要RouterOS v7.4beta版本以上,这里用的版本为7.4rc2 Testing
根据官网文档来说,启用容器功能需要将软路由连上显示器,通过本地操作启用,不能通过winbox或者ssh之类的远程连接方式开启。
启用容器会产生安全问题
根据容器运行情况,可能需要较大内存和硬盘。

# 启用container 本地控制台操作,非远程
/system/device-mode/update container=yes
会提示强制断电,重新启动生效。

# 安装container package 也就是在 Extra packages 包里的 container-7.4rc2.npk
下载页面:https://mikrotik.com/download
下载地址:https://download.mikrotik.com/routeros/7.4rc2/all_packages-x86-7.4rc2.zip

把此包通过Files菜单里的Upload功能上传到ros里,然后重启ros。
在System菜单里的Packages功能查看安装结果。只要显示出来,就是安装成功。

执行
/container/print
没有任何错误提示的话,则安装完成。

# 为容器创建一个veth设备(Virtual Ethernet 虚拟以太网接口)
/interface/veth/add name=veth1 address=172.17.0.2/16 gateway=172.17.0.1

# 为容器创建一个桥接网络,并将veth加入。
/interface/bridge/add name=dockers
/ip/address/add address=172.17.0.1/16 interface=dockers
/interface/bridge/port add bridge=dockers interface=veth1

# 配置nat,让容器可以联网
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/16


################################ 非必须 ###############################################
# 为容器创建环境变量
/container/envs/add name=pihole_envs key=TZ value="Europe/Riga"
/container/envs/add name=pihole_envs key=WEBPASSWORD value="mysecurepassword"
/container/envs/add name=pihole_envs key=DNSMASQ_USER value="root"
这个东西就是linux下的docker创建容器时的 -e 参数,为容器设置环境变量用的。

#定义目录挂载
/container/mounts/add name=etc_pihole src=disk1/etc dst=/etc/pihole
/container/mounts/add name=dnsmasq_pihole src=disk1/etc-dnsmasq.d dst=/etc/dnsmasq.d
这个东西就是linux下的docker创建容器时的 -v 参数,为容器映射宿主机目录用的。
################################ 非必须 ###############################################


############################################################以下部分暂不成功,跳过,实际用不上###################################################
# 设置仓库地址
/container/config/set registry-url=https://0hl2tn76.mirror.aliyuncs.com

# 拉取镜像
/container/add remote-image=redsocks2 interface=veth1
[admin@MikroTik] > /container/print
 0 name="ff5c9259-8bfc-42fc-8e3b-78157d0eb268" tag="library/redsocks2:latest" os="" arch="" interface=veth1 mounts="" dns="" status=error

可以看到status状态是error,错误。

# 删除这个容器
 /container/remove numbers=0
############################################################以上部分暂不成功,跳过,实际用不上##################################################

 # 从本地电脑导入镜像,(自己制作的镜像)
 amd64
    docker pull sk5
    docker save sk5 > sk5.tar
将 sk5.tar 上传到ros

# 从tar文件创建容器
/container/add file=sk5.tar interface=veth1 hostname=sk5
/container/print
0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=stopped

# 启动容器
/container/start number=0

/container/print
 0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=running

# 进入容器的shell
 /container/shell number=0

 内网直接互通,如果容器里跑一个nginx,可以直接用172.17.0.2访问了。

 # ros重启跟随启动容器
 /system/scheduler/add name=start-container start-time=startup on-event={:delay 3s;/container/start number=0}
 

任务计划参考:https://www.youtube.com/watch?v=mjLEMexz6_0&t=1s

2022-07-19
发表者 Venus
userdel: user wwww is currently used by process 1已关闭评论

userdel: user wwww is currently used by process 1

[root@localhost ~]# userdel wwww
userdel: user wwww is currently used by process 1

删除用户时删除不掉,提示上面错误。

pid 1是系统启动时候第一个进程,肯定不能杀死。

[root@localhost ~]# ps aux | more
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root:x:0:0:root:/root:/bin/bash
root         1  0.0  0.0 191256  2852 ?        Ss   6月10   6:37 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    6月10   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    6月10   0:13 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   6月10   0:00 [kworker/0:0H]

实际原因就是因为此用户的uid和gid都是0,跟root账号一样。
修改 /etc/passwd 文件,将此用户的uid和gid改成大于1000的就行,不要和现有的重复。再次删除即可。

[root@localhost ~]# userdel wwww
就不报错了。

2022-05-24
发表者 Venus
php7.2安装pdo_sqlsrv连接mssql模块已关闭评论

php7.2安装pdo_sqlsrv连接mssql模块

数据库为 SQL Server 2016 Web版 云数据库

# 设置yum源安装odbc

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
yum remove unixODBC unixODBC-devel
yum install -y msodbcsql17
yum install -y mssql-tools
yum install -y unixODBC-devel

# 配置php加载模块( php.ini )
下载对应php版本的模块 https://github.com/microsoft/msphpsql/releases/download/v5.8.1/CentOS7-7.2.tar

extension=/xxx/xxx/php_pdo_sqlsrv_72_nts.so
extension=/xxx/xxx/php_sqlsrv_72_nts.so

重启php

参考:
https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16#redhat17
https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?redirectedfrom=MSDN&view=sql-server-ver16

2022-04-16
发表者 Venus
parted命令3TB硬盘分区已关闭评论

parted命令3TB硬盘分区

# 转为GPT类型并将所有空间分为一个分区
[root@ip-172-31-19-69 ~]# parted /dev/nvme1n1
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) print
(parted) quit

# 格式化
[root@ip-172-31-19-69 ~]# mkfs.ext4 /dev/nvme1n1p1

# 开机自动挂载 编辑下面文件,添加
[root@ip-172-31-19-69 ~]# vi /etc/fstab
/dev/nvme1n1p1 /home ext4 defaults 0 0

# 读取 fstab 文件并挂载里面所有的配置
[root@ip-172-31-19-69 ~]# mount -a

参考:https://blog.51cto.com/u_15076212/4373955

2021-10-25
发表者 Venus
linux nfs文件共享配置已关闭评论

linux nfs文件共享配置

# 创建共享目录

[root@MiWiFi-RA69-srv ~]# mkdir /mnt/nfs

# 创建nfs共享

[root@MiWiFi-RA69-srv ~]# cat /etc/exports
/mnt/nfs *(rw,no_all_squash,no_root_squash,insecure,sync,no_wdelay)

# 启动服务

[root@MiWiFi-RA69-srv ~]# systemctl restart rpcbind.service
[root@MiWiFi-RA69-srv ~]# systemctl restart nfs.service

# 查看共享

[root@MiWiFi-RA69-srv ~]# showmount -e localhost
Export list for localhost:
/mnt/nfs *

# 客户端挂载

[root@MiWiFi-RA69-srv cifs]# showmount -e 192.168.31.183
Export list for 192.168.31.183:
/mnt/nfs *
[root@MiWiFi-RA69-srv cifs]# mkdir /mnt/nfs
[root@MiWiFi-RA69-srv cifs]# mount -t nfs 192.168.31.183:/mnt/nfs /mnt/nfs

[root@MiWiFi-RA69-srv cifs]# df -T
Filesystem              Type     1K-blocks      Used Available Use% Mounted on
devtmpfs                devtmpfs   1926528         0   1926528   0% /dev
tmpfs                   tmpfs      1809260        12   1809248   1% /dev/shm
tmpfs                   tmpfs      1809260    190492   1618768  11% /run
tmpfs                   tmpfs      1809260         0   1809260   0% /sys/fs/cgroup
/dev/xvda3              xfs       17814528  11200964   6613564  63% /
/dev/xvda1              xfs        1038336    133500    904836  13% /boot
tmpfs                   tmpfs       361852         0    361852   0% /run/user/0
//192.168.31.244/iso    cifs     209713148 133600280  76112868  64% /mnt/cifs
192.168.31.183:/mnt/nfs nfs4      17814528  15722496   2092032  89% /mnt/nfs

客户端性能问题参考:
https://help.aliyun.com/document_detail/184789.htm
如何修改同时发起的NFS请求数量 部分内容

echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf
sysctl -w sunrpc.tcp_slot_table_entries=128