行动…Don\'t ever let somebody tell you, you can\'t do something. you got a dream, you gotta protect it. people can\'t do something themselves they wanna tell you you can\'t do it.if you want something. go get it.
分类: 大数据
2016-06-02 19:06:40
此项目所需平台为Centos6.5 中安装keepalived+双主mysql+nfs+ffmpeg
A服务器IP:192.168.10.95
B服务器IP:192.168.10.20
浮动IP(也就是虚拟IP):192.168.10.200
文件服务器:192.168.10.100
安装系统时定制安装包: develop tool 选择几项GCC安装包
Load balance 选中keepalived(注:也可不选,手动安装)
Mysql安装
若不定制安装包,在安装ncurses时提示缺少gcc,若要安装。把系统盘挂到某目录下。做如下设置
Vi /etc/yum.repos.d/Centos-Media.repo
把baseurl=/path 改为所需的路径。如 baseurl=file///opt/hoch/ 注:我的U盘挂在/opt/hoch下
把 enable=0 改为 enable=1 把其它源中的1改为0
yum install gcc*
1. ncurses-**.tar.gz 安装
./configure
make && make install
2. cmake-**.tar.gz
./bootstrap
make && make install
3. mysql-**.tar.gz
a) tar zxvf mysql-**.tar.gz
b) cd myql-**
c) cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
d) mkdir -p /user/local/mysql/data
e) groupadd mysql
f) useradd -g mysql mysql
4. make && make install
5. 设置权限
a) chown -R mysql:mysql /usr/local/mysql
6. /usr/local/mydql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql
7. chown -R root:root /usr/local/mysql
8. chown -R mysql:mysql /usr/local/mysql/data
添加mysql服务:
9. Cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
10. 把mysql客户端放到默认路径,方便任意处调用
a) Ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
注:如果报mysql.sock找不到,查看配置文件:grep sock /etc/my.cnf
查看sock=/path 是否是所需路径。若不是,改为提示所需的路径
11. 加入系统服务,随机启动
a) chkconfig mysql on
Tomcat安装
1. 解压tomcat到指定目录
a) tar zxvf tomcat-**.tar.gz -C /usr/local/tomcat
b) cd /usr/local/tomcat/bin
c) ./startup.sh
2. 把war包拷贝到webapps下,会自动解压
3. 进入解压目录(如ssp)WEB-INF/classes
4. 编辑conf.properties
a) 修改里面的用户名密码IP 为mysql所在机器的配置
5. /usr/local/mysql/bin/mysqladmin -u root password ‘密码’ (修改root密码)
开放远程访问权限:
Use mysql;
Update user set host = ‘%’ where user = ‘root’;
若出现error : duplicate entry 重复录入。 可下命令查询是否有了% 值:
select host from user where user = 'root';
如果有了,可直接: flush privileges;
修改成功后,本地mysql 直接登录查库。显示不对.用 mysql -h192.168.10.95 -uroot –p 在B服务器上也做以下同样操作(B上第8步可以省略,因为会同步过来)。
6. 进入mysql建立字符集:
a) CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; (注:db_name所建数据库,本项目为ssp)
7. Use ssp; (建立项目库名)
8. Source ssp.sql (到ssp.sql文件目录下,登录mysql执行此句。linuxman还是强烈建议,先不导入数据。待全步搭建完成后再做7,8两步)
防火墙添加端口:vi /etc/sysconfig/iptables
在所有规则的最上面
-A INPUT -p tcp --dport 8080 -j ACCEPT
-A OUTPUT -p tcp --sport 8080 -j ACCEPT
Mysql 主主备份步骤
Vi /etc/my.cnf
在A主机器的[mysqld]下加入
Master 主机器
binlog_format=mixed (此句没加入会导致表数据插入错误时 slave_sql_running 停止运行)
log-bin=mysql-bin
server-id=1
binlog-do-db=ssp
binlog-ignore-db=mysql
replicate-do-db=ssp
replicate-ignore-db=mysql
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
设置后重启mysql服务
在B从机器的[mysqld]下加入
Slave 备用机器
binlog_format=mixed
log-bin=mysql-bin
#log-bin=/data0/logs
server-id=2
binlog-do-db=ssp
binlog-ignore-db=mysql
replicate-do-db=ssp
replicate-ignore-db=mysql
log-slave-updates
sync_binlog=1
auto_increment_increment=3
auto_increment_offset=2
设置后重启、mysql
服务器A和服务器B互为主从,所以都要分别建立一个同步用户。 在A,B上分别执行此命令.IP后面的“*”号,在A主机执行时输入B主机的IP,在B 主机执行时输入A的IP
1. grant replication slave on *.* to 'replication'@'192.168.10.*' identified by '000000';
2. flush privileges;
分别在服务器A、B上查看做为主服务器状态
A服务器
mysql>flush tables with read lock;
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000007
Position: 107
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
mysql>unlock tables;
B服务器
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 110
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
分别在服务器A、B上用change master语句指定同步位置
A、服务器
mysql>change master to master_host='192.168.10.B', master_user='replication', master_password='000000', master_log_file='mysql-bin.000005', master_log_pos=110;
B、服务器
mysql>change master to master_host='192.168.10.A', master_user='replication', master_password='000000', master_log_file='mysql-bin.000007', master_log_pos=107;
注:master_log_file,master_log_pos由上面主服务器查出的状态值中确定。master_log_file对应File,master_log_pos对应Position。
mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
d)分别在服务器A、B上启动从服务器线程
mysql>start slave;
e)分别在服务器A、B上查看从服务器状态
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Keepalived 安装
Openssl安装
rm -rf /etc/ssl #删除配置文件
prefix指定安装目录,openssldir是配置文件目录。建议安装两次。shared作用是生成动态链接库。
tar -zxvf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t
./config --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install
keepalived安装:
tar zxf keepalived-1.2.6.tar.gz
cd keepalived-1.2.6
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
修改/etc/init.d/keepalived
寻找大约15行左右的 . /etc/sysconfig/keepalived, 修改为:
. /usr/local/keepalived/etc/sysconfig/keepalived, 即指向正确的文件位置
同时在上述行下添加以下内容(将keepavlied主程序所在路径导入到环境变量PATH中):
export PATH="$PATH:/usr/local/keepalived/sbin"
修改/usr/local/keepalived/etc/sysconfig/keepalived文件,设置正确的服务启动参数
KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"
4. 经过以上修改,keepalived基本安装即可完成,启动测试之:
service keepalived restart
5. 切勿忘记将此服务设置为开机启动
chkconfig keepalived on
启动提示“Starting keepalived: keepalived: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory”
用 find / -name libssl.so.1.0.0
系统显示路径在 /usr/local/lib64下面
用命令 ldconfig /usr/local/lib64
此时重启启动成功。
(备注:可以用 “ldd 可执行程序名” ldd /usr/local/keepalived/sbin/keepalived 会显示动态链接库)
配置主从模式:
节点A的关键配置:
节点A上的配置文件/usr/local/keepalived/etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from root@local host
smtp_server localhost
smtp_connect_timeout 30
router_id NodeA
}
vrrp_instance VI_1 {
state MASTER #指定A节点为主节点 备用节点上设置为BACKUP即可
interface eth0 #绑定虚拟IP的网络接口
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
priority 100 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
192.168.10.200
}
}
默认的配置文件中,竟然没有子网掩码,从而导致使用了默认子网掩码255.255.255.255,如果导致无法从其它机器访问虚拟IP(keepalived虚拟IP无法ping通)。
按同样的方法配置节点B并修改配置文件,可将A节点的配置文件复制到B节点,并修改以下几项:
router_id NodeB
state BACKUP
priority 99
其它项不必修改。
加入系统服务随机启动:chkconfig keepalived on
以下安装文件服务器,给A,B提供文件存放。在第三台机器上执行:(看个人需求也可搭建在A或B上)
Nfs安装:
rpm –ivh portmap-**.rpm
开启开启portmap和nfs服务service portmap start
service nfs start
chkconfig --level nfs 35 on
chkconfig --level protmap 35 on
2、将要共享的目录写到exports文件中 假设共享的目录为 /sharedisk/
vim /etc/exports
在exports文件中添加
/sharedisk
192.168.10.0/24(rw,no_root_squash,async)
3、重启nfs 或者使用exportfs命令使设置生效
重启nfs:
service nfs restart
用exportfs
exportfs -rv
#exportfs用法
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :将详细的信息输出到屏幕上
这样nfs的服务器端就设置好了
在客户端挂载该目录:
4. 在本地创建挂载的目录
mkdir /sharedisk
Chmod 777 /sharedisk
mount -t nfs 192.168.10.100:/sharedisk /sharedisk
#将服务器192.168.10.100上的/sharedisk/ 路径挂载到本地
此时,如果服务器端的防火墙有开着的话,将会提示错误.或半天连不上
是服务端端口被防火墙拦截所致。由于nfs服务需要开启 mountd,nfs,nlockmgr,portmapper,rquotad这5个服务,需要将这5个服务的端口加到iptables里面。而nfs 和 portmapper两个服务是固定端口的,nfs为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要先把这3个服务的端口设置成固定的。
登录到服务器端:
5、查看当前这5个服务的端口并记录下来 用rpcinfo -p
把显示 nfs 2049, portmapper 111, 以及剩下的三个服务的端口在配置文件中取消注释。把端口号记下。
vi /etc/sysconfig/nfs
# Port rquotad should listen on.
RQUOTAD_PORT=966
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=33993
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=33993
# Port rpc.mountd should listen on.
MOUNTD_PORT=976
6、将这3个服务的端口设置为固定端口,修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)
vim /etc/services
在文件的最后一行添加:
mountd 976/tcp
mountd 976/udp
rquotad 966/tcp
rquotad 966/udp
nlockmgr 33993/tcp
nlockmgr 33993/udp
保存并退出。
7、重启下nfs服务。 service nfs restart
8、在防火墙中开放这5个端口
vim /etc/sysconfig/iptables
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p tcp --dport 976 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p tcp --dport 59931 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p udp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p udp --dport 976 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -m state --state NEW -p udp --dport 59931 -j ACCEPT
service iptables restart
重新执行步骤4挂载即可
8、nfs安全设置方面(此步可不做)
hosts.allow和hosts.deny设置
hosts.allow设置:
portmap: ip
hosts.deny设置:
portmap:ALL
加入系统随机启动:chkconfig nfs on
Samba安装配置:
1,先查看安装情况:rpm -qa|grep samba
samba-common-3.6.9-164.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-3.6.9-164.el6.x86_64
samba-winbind-clients-3.6.9-164.el6.x86_64
samba-client-3.6.9-164.el6.x86_64
samba-winbind-3.6.9-164.el6.x86_64
根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包。
使用命令:mount /dev/sdb* /mnt/
Cd /mnt/Packages
rpm -ivh samba-common-3.6.9-151.el6.x86_64
rpm -ivh samba-3.6.9-151.el6.x86_64
rpm -ivh samba-client-3.6.9-151.el6.x86_64
查看samba的服务启动情况
# service smb status
设置开机自启动
chkconfig --level 35 smb on //在3、5级别上自动运行samba服务
配置smb服务
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = name
[share] 注:此项为[public] 修改后的效果
comment = Public Stuff
path = /share
public = yes
writable = yes
printable = no
write list = +staff
guest ok = yes
共享目录为:/share,共享目录对外名称为:hoch 即在Windows看到的目录名称。
设置共享目录权限:chown -R nobody:nobody /share
8、启动或者重启smb服务
Samba的所有用户都必须是系统里已存在的用户。我们要授权系统用户访问Samba的话,通过命令:
adduser -M hoch
smbpasswd -a hoch #添加用户hoch到Samba用户数据库中
添加防火墙端口:
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p tcp --dport 455 -j ACCEPT
-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
加入系统随机启动:chkconfig smb on
不要用户访问:
#security = user // 注释掉原来的user改成如下 security = share // 变成共享的 |
第三步,启动服务。关闭防火墙:service iptables stop
Ffmpeg安装:
先解决系统默认java找不到问题。
update-alternatives --config java
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
3 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
Enter to keep the current selection[+], or type selection number:
在vi /etc/profile 后面加入
export
JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
export PATH=$PATH:$JAVA_HOME/bin
立即生效执行: source /etc/profile
解压缩(若是zip后缀用命令 unzip)
tar -zxvf ffmpeg-2.0.1.tar.gz
3、编辑profile文件:
vi /etc/profile
在文件末尾加上两句话:
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export PATH=$PATH:$JAVA_HOME/bin
4、配置安装路径之类的:
./configure --enable-shared --prefix=/usr/local/ffmpeg
--enable-shared 参数据说是允许其编译产生动态库,在以后的编程中要用到这个几个动态库,我也没考证,就直接用了。
如果出现异常,提示因为缺少yasm,需要添加参数,再执行以下命令:
./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg
如果执行结果不对,可以根据提示信息,并查看帮助,解决问题
./configure --help
5、编译安装
make
make install
6、安装之后在/usr/local/ffmpeg会看到有三个目录
bin 执行文件目录
lib 静态,动态链接库目录
include 编程用到的头文件
7、为了防止执行程序找不到库文件,
可以将/usr/local/ffmpeg/lib目录设置到LD_LIBRARY_PATH环境变量
8、若出现error while loading shared libraries: libavdevice.so.52的错误
修改/etc/ld.so.conf 在最后一行加上/usr/local/ffmpeg/lib
ldconfig -v
#并修改 /usr/local/ffmpeg/lib目录下的文件权限为777
(注:此步根据本机情况决定。Hostname –i 取的值若不是本机使用的真实IP 要改/etc/hosts中的配置文件)