lsyncd安装部署记录

约定如下:    
运行lsyncd的节点为master    
被同步的节点为slave

1.在master上生成key并copy给slave节点做免密码通信。
这里我们是自用的机器则直接用的root。

ssh-keygen -t rsa  # 全部回车默认

ssh-copy-id [email protected]_server_IP

2.安装epel源码仓库和lsyncd

yum -y install epel-release
yum install lsyncd rsynce
systemctl enable lsyncd

3.配置文并启动

cat   /etc/lsyncd.conf
sync { default.rsyncssh,host="slave_server_IP-A",source="/opt/nginx/",targetdir="/opt/nginx/"}

sync { default.rsyncssh,host="slave_server_IP-B",source="/opt/nginx/",targetdir="/opt/nginx/"}

4.启动并查看状态

systemctl start lsyncd
systemctl status lsyncd

更多的使用细节懒得记录了。

更多的配置例子和文章可以参考下面
/usr/share/doc/lsyncd*/examples/
https://github.com/axkibe/lsyncd
http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/

阅读剩余部分...

Centos的openresty安装记录

以下是自用的openresty编译归纳


yum安装常用包

yum -y update
yum -y install epel-release -y
yum install lua-devel luajit git dos2unix mercurial -y
yum -y --skip-broken install gcc  vim-enhanced gcc-c++ libtool-libs libtool autoconf subversion zip unzip  wget crontabs iptables file bison patch mlocate flex diffutils automake imake make cmake cpp unix2dos mercurial kernel-devel zlib-devel

编译安装pcre

cd /tmp
wget -c http://sourceforge.net/projects/pcre/files/pcre/8.21/pcre-8.21.tar.gz/download -O -|tar xz
cd pcre-8.21 && ./configure
make && make install
if [ `uname -i` == x86_64 ]; then ln -s /usr/lib64/{libpcre.*,libjpeg.so,libpng.so,libXpm.so,libc-client.so,libkrb5.so,libexpat.so,libevent.so} /usr/lib/;fi

编译安装openresty

wget https://openresty.org/download/openresty-1.17.8.1rc1.tar.gz -O -|tar xz
cd openresty-1.17.8.1rc1
#wget -c https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.2.tar.gz -O -|tar xz && mv libressl-* libressl
git clone https://github.com/libressl-portable/portable  libressl
cd libressl && ./autogen.sh
cd ../
./configure --prefix=/etc --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid  --conf-path=/etc/nginx/nginx.conf --lock-path=/var/lock/subsys/nginx --with-stream  --with-stream_ssl_module   --with-stream_realip_module --with-stream_ssl_preread_module  --with-mail=dynamic --with-mail_ssl_module --with-openssl=libressl --with-http_v2_module --with-pcre --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module  --with-http_secure_link_module --with-http_dav_module  --with-http_ssl_module --with-http_sub_module  
gmake
gmake install

wget http://dl.kvm.la/conf/nginx.init -O /etc/init.d/nginx
chmod 755 /etc/init.d/nginx
chkconfig --add nginx
chkconfig --level 235 nginx on
# cat  /usr/lib/systemd/system/openresty.service
[Unit]
Description=The OpenResty Application Platform
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Solusvm手动迁移kvm虚拟机

Solusvm有在线迁移,但是需要离线,而且没有队列支持,操作起来相当的操心。

因数据比较大的原因,快照后直接用dd读取并压缩通过管道传递给新的宿主10.10.1.2并解压再写入lvm分区。

lvcreate -L 200G -s -n  kvm101_snap /dev/vg0/kvm101_img

dd if=/dev/vg0/kvm101_snap conv=sync,noerror bs=8M | gzip -c | ssh [email protected] "gzip -d |dd of=/dev/vg0/kvm101_img conv=sync,noerror bs=8M"

lvremove /dev/vg0/kvm101_snap -f

等待数据写入完成后,再使用rsync进行一次同步jiu差不多可以切换了。

在线服务数据出入量小或者几乎不变动可以用这种方法。

Centos升级第三方高版本Kernel

Centos6

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

Centos7

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

release的版本号有时候会因为升级而变动,所以尽量核对一下原文出处的内容http://elrepo.org/tiki/tiki-index.php

在升级完后修改grub的配置文件/boot/grub/grub.conf将default=1改为default=0 这个地方主要是为了手动修改确认选择默认内核。
另外建议将timeout参数改为15以上,方便部分延长高操作卡的IPMI选择。

 

UPDATE:ORZ!发现之前好像写过一次, 地址是http://www.kvm.la/1024.html

Linux下更新AMI主板bios

以下内容基于Centos6 X64

涉及到epel gcc kernel git等依赖工具和包

主要解决编译Linux的AFU


涉及到的源码和程序如下两个链接

afu的二进制下载链接 http://domoticx.com/bios-tool-ami-flasher-software/

Linux的afu驱动源码 https://github.com/mrwnwttk/afulnx

yum install epel-release gcc git wget -y

git clone https://github.com/mrwnwttk/afulnx

cd afulnx/

wget http://dl.kvm.la/linux/afulnx-5.05.04.zip

unzip fulnx-5.05.04.zip

cd afulnx64/driver

make clean

make default

mv amifldrv_mod.o ..

chmod 775  ../afulnx_64

./afulnx_64 ./X9DR3P8.523 /P  /B  /N  /K  /R /MER /OPR

+---------------------------------------------------------------------------+

|                 AMI Firmware Update Utility  v5.05.04                     |

|      Copyright (C)2013 American Megatrends Inc. All Rights Reserved.      |

+---------------------------------------------------------------------------+

Reading flash ............... done

- ME Data Size checking . ok

- FFS checksums ......... ok

Erasing Boot Block .......... done

Updating Boot Block ......... done

Verifying Boot Block ........ done

Erasing Main Block .......... done

Updating Main Block ......... done

Verifying Main Block ........ done

Erasing NVRAM Block ......... done

Updating NVRAM Block ........ done

Verifying NVRAM Block ....... done

Erasing NCB Block ........... done

Updating NCB Block .......... done

Verifying NCB Block ......... done

- Successful Update Recovery Loader to OPRx!!

- Successful Update FPT, MFSB, FTPR and MFS!!

- ME Entire Image update success !!

- Update success for /OPR!!

WARNING : System must power-off to have the changes take effect!


附带DOS版本用法

@echo off

REN AFUDOSU.SMC AFUDOSU.EXE

AFUDOSU.EXE  %1  /P  /B  /N  /K  /R /FDT /MER /OPR

REN AFUDOSU.EXE AFUDOSU.SMC

清空centos系统日志记录shell

顺手一个for循环解决清空各种系统日志。

LIST="boot.log btmp cron dmesg lastlog maillog messages secure spooler tallylog wtmp yum.log"
for NAME in $LIST; do echo> /var/log/$NAME;done
history -c

如果是已使用比较久的系统需要加入一些删除命令。

Centos7批量添加IP

引用bash的约定内容如下:

IPv4 subnet 10.0.0.0/24    
网卡名 eth0    
起始IP 10.0.0.2    
结束IP 10.0.0.254    
for中的2和254代表起始he结束Ip的位数

for I in $(seq 2 254)
do nmcli con mod eth0 +ipv4.addresses 10.0.0.${I};done
nmcli con up eth0

首先确定您机器网卡名是什么,可以用ip addr或者ifconfig。(ifconfig需要运行yum install nettools -y安装后才可以用)

其次确认的IP的信息,弄清楚起始和结尾IP。
最后修改for循环的IP参数和网名,检查后执行命令
完成后用ip addr命令查看添加情况,从外网链接IP验证是否上线。

关于更多的for和nmcli命令可以搜索或者查看help文档。


2.3. 使用 NETWORKMANAGER 命令行工具 NMCLI

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-using_the_networkmanager_command_line_tool_nmcli

kvm进程被oom-killer

前一段时间做了一个送内存的活动,昨天早上收到邮件说有小鸡离线的问题。

从dmesg里面发现有qemu-kvm进程出现了oom-killer,然后一下子焕然大悟是物理内存bugouyong了。

宿主配置是96G平常撑死只放5-60个小鸡,然而这次的送内存遇上了有4G和5G内存方案的订单有十多个扎堆,

按以往的经验运行40多个小鸡是毫无压力的,但是还有30来个2G方案,全部加一起全部运行起来就出现了qemu-kvm进程被挤掉的问题。

粗略的算下(30x2G)+ (16X4G)+ 3G = 127G内存

大致上算下来此次kvm超额分配四分之一的内存,大部分虚拟机都实打实的开销内存后出现了进程被系统捏死的情况,如全部小鸡的内存都用起来一点渣都不留估计会挤掉更多的进程。

所以kvm真能超售内存? 我个人的结论是:一个停车位一个车,停车场车位总数有限,车位没有分配管理好又遇上满了,就会有停不进去de车。

ubuntu升级到18

大致上涉及到下面的一些操作

有些kvm模版/etc/fstab里面用uuid做设备路径,导致swap没加载上。
把uuid=XXX一串改为/dev/vda2后再执行swapon -a即可解决

1.用sed替换更新ubuntu的代号

sed -i 's/zesty/bionic/g' /etc/apt/sources.list

先用lsb_release -a确认系统版本和代号,然后改动上述的sed替换参数。zesty是17的代号,而bionic是18的代号。

2.apt清理和升级操作大部分操作如下

apt-get clean -y
apt-get update -y
apt-get upgrade -y #会询问配置文件更新还是保留当前配置
apt-get dist-upgrade -y
apt autoremove -y
apt install update-manager-core -y
do-release-upgrade

3.重启和lsb_release -a查看版本

~# lsb_release -a
No LSB modules are available.
Distributor ID:Ubuntu
Description:Ubuntu 18.04.1 LTS
Release:18.04
Codename:bionic

惠普ssacli 工具使用

centos安装包下载地址 https://downloads.linux.hpe.com/SDR/repo/mcp/centos/7/x86_64/current/

阅读剩余部分...

-bash: 警告:setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8): 没有那个文件或目录

最近把MACOS系统的语言设置成了英文就出现了这个问题。

解决办法,设置编码后重写链接ssh

cat>/etc/environment<<EOF
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
EOF

或者在本机设置export定义LC_ALL

 cat>>~/.bash_profile<<EOF
 export LC_ALL=en_US.UTF-8
 export LANG=en_US.UTF-8
 EOF  


手持认证的背后

各种手持认证 各种奇葩的认证。。。。。


这个社会环境的可信度和信誉制度完全坍缩了。

MegaCli命令建立raid10操作细节记录

1.对于命令操作情况不熟悉的情况下,最好使用没有数据的机器操作。
2.需要系统里面安装MegaCli
3. MegaCli可以在http://dl.kvm.la/lsi 里面下载
4. 如果可以的话建议把/opt/MegaRAID/MegaCli/MegaCli64复制到/usr/bin下
5.用U盘安装个系统再装MegaCli比较方便,如果有条件封装系统和PXE的话更直接。

先查硬盘的Enclosure Device ID和Slot Number位置找出来

阅读剩余部分...

MACOS/Linux打包ISO

最近要打包一些系统驱动挂载ISO,特地找了一些操作记录下。
如果要创建带引导的iso,建议用工具。

Linux下用mkisofs,简单粗暴。

mkisofs -o name.iso source/path
mount -o loop name.iso /mnt/


MACOS下用磁盘工具创建cdr或者dmg,然后再转ISO。

打开Teminal,操作命令.

如果需要将DMG转换为ISO,那么输入以下命令:

hdiutil source.dmg -format UDTO -o name.iso

如果需要将ISO转换为DMG,那么输入以下命令:

hdiutil convert source.iso -format UDRW -o name.dmg

cdr转iso

hdiutil makehybrid -iso -joliet -o name.iso source.cdr

Centos7下Solusvm母鸡部署小记

存本地文档里面,每次都懒得翻干脆贴上来

#加epel源和安装常用的包
yum install epel-release -y -q
yum install -y -q net-tools -y fail2ban iftop wget tcpdunmp  zip unzip  wget ntp rsync  vim-enhanced
systemctl enable fail2ban
#设置时区
/etc/init.d/ntpd stop
cat >/etc/sysconfig/clock<<EOF
ZONE="Asia/Shanghai"
UTC=false
ARC=false
EOF
cat /usr/share/zoneinfo/Asia/Shanghai>/etc/localtime
ntpdate us.pool.ntp.org
echo "ntpdate us.pool.ntp.org">>/etc/rc.local
date
hwclock --systohc
#开始安装solusvm被控端
wget https://files.soluslabs.com/install.sh
sh install.sh<<EOF
2
EOF
#(选装)升级e2fsprogs
curl -s http://dl.kvm.la/shell/e2fspros.el6.sh|bash

阅读剩余部分...