在某些情况下为了实现Windows多台服务器负载均衡,需要使用共享来做图片及附件的上传空间。@H_403_1@
这个时候就需要使用到Samba、IIS虚拟目录等相关技术@H_403_1@
Web服务器使用upload作为上传的目录,现在需要使用2台服务器做负载均衡,后台使用一台Samba服务器作为文件共享存储@H_403_1@
卸载旧的samba组件,CentOS 6默认安装的是3.6的版本@H_403_1@
forain`rpm-qa|grepsamba`;dorpm-e--nodeps$a;done
2.安装Samba 4@H_403_1@
yum-yinstallsamba4samba4-commonsamba4-client
说明:由于Windows在IIS中站点下是不能直接通过磁盘映射的方式作为站点路径,必须使用原始的\\192.168.10.2\sns\upload这样的目录,而此时访问共享的用户就是应用程序池的用户。@H_403_1@
@H_403_1@
这个时候就可以2种选择:@H_403_1@
a.samba使用匿名访问可读写@H_403_1@
b.修改站点应用程序池用户为访问samba用户@H_403_1@
@H_403_1@
第一种:使用匿名方式访问共享@H_403_1@
groupadd -g 8800 smbgroup@H_403_1@
useradd -g smbgroup -s /sbin/nologin -d /dev/null smbuser@H_403_1@
创建共享目录@H_403_1@
mkdir /data/share@H_403_1@
chown -R smbuser.smbgroup /data/share@H_403_1@
chmod -R 755 smbuser.smbgroup /data/share@H_403_1@
@H_403_1@
4.配置Samba@H_403_1@
/etc/samba/smb.conf@H_403_1@
[global] workgroup=WORKGROUP serverstring=FileServer #hostsallow=127.192.168.10 logfile=/var/log/samba/log.%m maxlogsize=50 security=user passdbbackend=tdbsam maptoguest=baduser guestaccount=smbuser createmask=0775 forcecreatemode=0775 directorymask=0775 forcedirectorymode=0775 unixcharset=cp936 doscharset=cp936 usesendfile=yes writeraw=yes readraw=yes maxxmit=65535 aioreadsize=16384 aiowritesize=16384 [upload] comment=sns path=/var/www/html/upload browseable=no guestok=yes writable=yes #validusers=@smbgroup
说明:在samba 4版本里面security这个值已经废弃了share,server。因此配置匿名访问就需要@H_403_1@
security=user maptoguest=baduser
@H_403_1@
5.测试samba@H_403_1@
[root@gz17img40samba]#testparm Loadsmbconfigfilesfrom/etc/samba/smb.conf Processingsection"[upload]" LoadedservicesfileOK. Serverrole:ROLE_STANDALONE Pressentertoseeadumpofyourservicedefinitions #Globalparameters [global] doscharset=cp936 unixcharset=cp936 serverstring=FileServer security=USER maptoguest=BadUser guestaccount=smbuser logfile=/var/log/samba/log.%m maxlogsize=50 maxxmit=65535 idmapconfig*:backend=tdb createmask=0775 forcecreatemode=0775 directorymask=0775 forcedirectorymode=0775 aioreadsize=16384 aiowritesize=16384 usesendfile=Yes [upload] comment=sns path=/var/www/html/upload readonly=No guestok=Yes browseable=No
@H_403_1@
6.设置启动服务及开机启动@H_403_1@
/etc/init.d/nmbstart /etc/init.d/smbstart chkconfignmbon chkconfigsmbon
@H_403_1@
第二部分:Windows IIS使用共享作为路径@H_403_1@
举例:
@H_403_1@
我需要在站点的SignPDF路径下建立PDF虚拟路径@H_403_1@
1.点击“站点”--》对应的SignPDF目录,右击“SignPDF”,选择“建立虚拟目录”@H_403_1@
@H_403_1@
@H_403_1@
2.输入别名,我们这里输入“PDF”,然后选择对应的物理路径。@H_403_1@
注意:@H_403_1@ |
@H_403_1@
groupadd -g 8800 smbgroup@H_403_1@
useradd -g smbgroup -s /sbin/nologin -d /dev/null smbuser@H_403_1@
创建共享目录@H_403_1@
mkdir /data/share@H_403_1@
chown -R smbuser.smbgroup /data/share@H_403_1@
chmod -R 755 smbuser.smbgroup /data/share@H_403_1@
创建smb访问账号及密码,smb账号要在系统中有同名账号,否则创建失败@H_403_1@
smbpasswd -a smbuser@H_403_1@
输入密码123456@H_403_1@
@H_403_1@
4.配置Samba@H_403_1@
/etc/samba/smb.conf@H_403_1@
[global] workgroup=WORKGROUP serverstring=FileServer #hostsallow=127.192.168.10 logfile=/var/log/samba/log.%m maxlogsize=50 security=user passdbbackend=tdbsam #maptoguest=baduser #guestaccount=smbuser createmask=0775 forcecreatemode=0775 directorymask=0775 forcedirectorymode=0775 unixcharset=cp936 doscharset=cp936 usesendfile=yes writeraw=yes readraw=yes maxxmit=65535 aioreadsize=16384 aiowritesize=16384 [upload] comment=sns path=/var/www/html/upload browseable=no #guestok=yes writable=yes validusers=@smbgroup
这里对比上面匿名访问的注释了@H_403_1@
#maptoguest=baduser #guestaccount=smbuser 在共享的时候修改了 #guestok=yes validusers=@smbgroup
@H_403_1@
5.测试samba@H_403_1@
[root@gz17img40samba]#testparm Loadsmbconfigfilesfrom/etc/samba/smb.conf Processingsection"[upload]" LoadedservicesfileOK. Serverrole:ROLE_STANDALONE Pressentertoseeadumpofyourservicedefinitions #Globalparameters [global] doscharset=cp936 unixcharset=cp936 serverstring=FileServer security=USER logfile=/var/log/samba/log.%m maxlogsize=50 maxxmit=65535 idmapconfig*:backend=tdb createmask=0775 forcecreatemode=0775 directorymask=0775 forcedirectorymode=0775 aioreadsize=16384 aiowritesize=16384 usesendfile=Yes [upload] comment=sns path=/var/www/html/upload readonly=No browseable=No validusers=@smbgroup
这个时候就可以通过访问\\192.168.10.20\upload,输入用户名密码smbuser,123456@H_403_1@
@H_403_1@
6.设置启动服务及开机启动@H_403_1@
/etc/init.d/nmbstart /etc/init.d/smbstart chkconfignmbon chkconfigsmbon
@H_403_1@
第二部分:Windows IIS使用共享作为路径@H_403_1@
举例:
@H_403_1@
我需要在站点的SignPDF路径下建立PDF虚拟路径@H_403_1@
1.在系统中创建smbuser,密码一定要与上面创建的smbuser的密码一致也为123456@H_403_1@
2.点击“站点”--》对应的SignPDF目录,右击“SignPDF”,选择“建立虚拟目录”@H_403_1@
@H_403_1@
@H_403_1@
3.输入别名,我们这里输入“PDF”,然后选择对应的物理路径,并点击“连接为”,输入账号smbuser密码123456@H_403_1@
@H_403_1@
4.现在就可以正常访问共享里的文件及内容了,但是你会发现无法上传。这是因为需要在web.config中定义用户名密码,在<system.web>下增加@H_403_1@
<identityimpersonate="true"userName="sns.m.vxuepin.com"password="asc"/>
@H_403_1@
@H_403_1@
问题:@H_403_1@
1.在配置Samba后发现在A节点建立的目录,B节点无法写入,这是因为2个用户是一致的但是用户的组不一致。比如A服务器主机名为ServerA,B服务器的主机名为ServerB,因此在Samba中的A节点对应的权限就是ServerA\smbuser,B服务器对应的权限就是ServerB\smbuser,这就是造成2台服务器权限不一致的问题。@H_403_1@
createmask=0775 forcecreatemode=0775 directorymask=0775 forcedirectorymode=0775
再重启服务即可@H_403_1@