Rootop 服务器运维与web架构

2014-04-08
发表者 Venus
暂无评论

FreeNAS-9.2安装

FreeNAS是一套基于FreeBSD系统的网络附加存储,可以用来做nfs或cifs网络存储。以实现共享存储的功能。

目前最新版为FreeNAS-9.2.1.3,下载地址:http://download.freenas.org/9.2.1.3/RELEASE/x64/FreeNAS-9.2.1.3-RELEASE-x64.iso

这里用虚拟机代替物理机,安装测试。挂载镜像,启动。

选择安装的磁盘,注意freenas最好安装到单独的一块硬盘,不需要多大容量。

安装完成,提示说从http://192.168.1.109登陆,默认用户名为admin密码为freenas,第一次登陆以后会要求更改,并且下次使用root登陆。

提示说在此版本中,之前的web管理用户admin被移出,取而代之的是root账户。

在system-settings中可以设置界面语言以及所在时区,将其改为中文,时区为上海。现在关机freenas,添加4块10G硬盘,用来存放数据,模拟添加的硬盘。

现在开始创建一个磁盘阵列,用来做nfs服务。

点击“ZFS Volume Manager”

填写卷名,卷类型选择Stripe,等于是raid0,点击add volume添加。

卷创建完成,设置nfs共享。

authorized networks是设置访问权限,下面可以设置单个ip可以访问nfs服务。maproot用户设置为root,其它默认,下面路径通过浏览选/mnt/nfsshare ,这个目录在创建卷的时候自动生成。

点击确定,创建。提示“是否打开服务” 即是否开启nfs服务。

现在找一台linux机器,挂载nfs。

[root@localhost ~]# mkdir /mnt/nfs
[root@localhost ~]# mount 192.168.1.109:/mnt/nfsshare /mnt/nfs/
[root@localhost ~]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda2              48G  4.9G   40G  11% /
/dev/sda3              19G  173M   18G   1% /home
/dev/sda1              99M   12M   83M  13% /boot
tmpfs                 249M     0  249M   0% /dev/shm
192.168.1.109:/mnt/nfsshare
                       32G  128K   32G   1% /mnt/nfs
创建文件测试:
[root@localhost nfs]# touch a
[root@localhost nfs]# ll
总计 1
-rw-r--r-- 1 root root 0 2014-04-08 a
[root@localhost nfs]# mkdir aaa
[root@localhost nfs]# ll
总计 1
-rw-r--r-- 1 root root 0 2014-04-08 a
drwxr-xr-x 2 root root 2 2014-04-08 aaa
[root@localhost nfs]#

至此,NAS网络附加存储完成。解决的问题就是:多台服务器应用数据一致性问题。

其它解决方案比如:mfs,fastdfs,hadoop等。

2014-04-04
发表者 Venus
暂无评论

linux下挂载nas存储异常处理

原文来自:http://blog.zhanxb.com/post/441/

1、故障现象:
挂载nas前,需要挂载nas存储的目录权限和所属者设置:
drwxr-xr-x  5 www www 4096 Apr 21 11:50 nas_storage

使用如下命令进行nas存储的挂载:

mount -t nfs 10.2.1.6:/vol/chinaface_web01 /opt/www/nas_storage

此时挂载nas存储的目录权限和所属者自动变为:
drwxr-xr-x  5 mysql mysql 4096 Apr 21 11:50 nas_storage

经与nas管理员沟通,nas存储的授权方式是限定IP地址,没有设置用户。(即使设置了也不一定是mysql呀,nas管理员怎么知道我的系统有mysql用户呢)

查看/etc/password文件,发现mysql的用户id和组id都是500,在www用户id和组id 503之前,难道nas存储挂载后自动将目录所有者改成所有者id和组id都是500的用户和组?
实践证明确实如此,将所有50x用户删除(不删除似乎会有组id混乱),重启系统,再重建www用户,此时再挂载nas存储即可保持挂载前后所属者和组id保持一致。

2、nas挂载步骤
防火墙开放端口111、2049、4045和4046
关闭selinux

PS: CIFS协议的NAS挂载:

mount.cifs命令所属rpm包:

[root@localhost ~]# rpm -qf /sbin/mount.cifs
cifs-utils-4.8.1-19.el6.x86_64

CIFS协议挂载NAS到Linux。

mount.cifs //[NAS IP Address]/[Folder Name] /mnt -o username=xxx,password=xxx,domain=xxx (If uses domain authentication)

2014-04-03
发表者 Venus
暂无评论

keepalived从机接管后主机恢复不抢占VIP

在lvs+keepalived环境中,为了减小keepalived主从切换带来的意外风险,设置主机恢复后不抢占VIP。
待进行vrrp协议通告备机不可用时切换。主要修改两个地方。(红色部分)

只需修改主服务器state MASTER改为state BACKUP并添加nopreempt

! Configuration File for keepalived

global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server localhost
smtp_connect_timeout 30
router_id mfs_master
}

vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 100
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.11
}
}

拔线测试即可。

2014-04-02
发表者 Venus
暂无评论

使用keepalived时iptables需要开放的协议

原理说明:
1、 通过vrrp协议广播,每个keepalived vrrp都去争取master
2、 以virtual_router_id为组队标识。 同为一个vip服务的keepalived的virtual_router_id相同
3、 以priority 为权值,同一个virtual_router_id下那个priority大那个就是master,其它为backup
之前实验都是关闭iptables配置keepalived,后来开启iptables后,发现主从切换,vip无法获取或者释放。
因为iptables过滤了vrrp协议,它不属于任何端口,像icmp一样,需要单独放行。
iptables -A INPUT -p vrrp -j ACCEPT
或者直接写入到/etc/sysconfig/iptables中即可。

我这里的iptables脚本:

#!/bin/bash
iptables -F
iptables -X
iptables -Z

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 9419 -j ACCEPT
iptables -A INPUT -p tcp --dport 9420 -j ACCEPT
iptables -A INPUT -p tcp --dport 9421 -j ACCEPT
iptables -A INPUT -p tcp --dport 9425 -j ACCEPT
iptables -A INPUT -p tcp --dport 873 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p vrrp -j ACCEPT

service iptables save
service iptables restart
exit

2014-04-01
发表者 Venus
暂无评论

mariadb简介及安装

mariadb简介及安装:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人
Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自
Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了
PrimeBase XT (PBXT) 和 FederatedX存储引擎。

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。

MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。

与 MySQL 相比较,MariaDB 更强的地方在于:
Maria 存储引擎
PBXT 存储引擎
XtraDB 存储引擎
FederatedX 存储引擎
更快的复制查询处理
线程池
更少的警告和bug
运行速度更快
更多的 Extensions (More index parts, new startup options etc)
更好的功能测试
数据表消除
慢查询日志的扩展统计
支持对 Unicode 的排序

相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
官网:www.mariadb.org
目前稳定版:mariadb-5.5.36
下载地址:http://mirrors.neusoft.edu.cn/mariadb/mariadb-5.5.36/kvm-tarbake-jaunty-x86/mariadb-5.5.36.tar.gz

安装bison:
[root@localhost bison-2.5]# ./configure
[root@localhost bison-2.5]# make && make install

安装cmake:
[root@localhost cmake-2.8.10.2]# ./configure
[root@localhost cmake-2.8.10.2]# gmake
[root@localhost cmake-2.8.10.2]# make install

安装mariadb:

[root@localhost mariadb-5.5.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_UNIX_ADDR=/tmp/mariadb.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mariadb/data -DMYSQL_USER=mysql
[root@localhost mariadb-5.5.36]# make && make install
[root@localhost mariadb]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mariadb]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mariadb]# chmod 755 /etc/init.d/mysqld
[root@localhost mariadb]# chown -R root.mysql /usr/local/mariadb/
[root@localhost mariadb]# chown -R mysql /usr/local/mariadb/data/
[root@localhost mariadb]# /usr/local/mariadb/scripts/mysql_install_db --basedir=/usr/local/mariadb/ --datadir=/usr/local/mariadb/data/ --user=mysql

[root@localhost mariadb]# service mysqld start
Starting MySQL… [确定]
[root@localhost mariadb]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld 10996 mysql 15u IPv6 109597 TCP *:mysql (LISTEN)

[root@localhost ~]# /usr/local/mariadb/bin/mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.36-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

MariaDB [(none)]> show engines;
+——————–+———+—————————————————————————-+————–+——+————+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+——————–+———+—————————————————————————-+————–+——+————+
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO |
+——————–+———+—————————————————————————-+————–+——+————+
7 rows in set (0.00 sec)

MariaDB [(none)]>