728x90

A question that comes up from customers from time to time is how do I get a list of what users are actually using OCS/Lync?  While there’s no built in report to easily tell you what users are actually signing into the environment, there is some information stored in SQL that you can use to help figure out adoption rate in your environment.  The information we’re looking for is stored in the LastNewRegisterTime column in the HomedResourceDynamic table in the rtcdyn database.  You can run the following queries* to pull back the user’s SIP URI and their last registration time:

For Lync Server 2010/2013

USE rtcdyn
SELECT rtc.dbo.Resource.UserAtHost, rtcdyn.dbo.HomedResourceDynamic.LastNewRegisterTime
FROM rtcdyn.dbo.HomedResourceDynamic
INNER JOIN rtc.dbo.Resource on rtc.dbo.Resource.ResourceId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
INNER JOIN rtcdyn.dbo.RegistrarEndpoint ON rtcdyn.dbo.RegistrarEndpoint.OwnerId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
WHERE IsServerSource = 0
ORDER BY UserAtHost

Which produces the following output:

For OCS 2007 R2

USE rtcdyn
SELECT rtc.dbo.Resource.UserAtHost, rtcdyn.dbo.HomedResourceDynamic.LastNewRegisterTime
FROM rtcdyn.dbo.HomedResourceDynamic
INNER JOIN rtc.dbo.Resource ON rtc.dbo.Resource.ResourceId = rtcdyn.dbo.HomedResourceDynamic.OwnerId
ORDER BY UserAtHost

Which produces the following output:


Note: A user with a LastNewRegisterTime of NULL is a user that has never logged in, but has been added to someone’s contact list.  You would want to remove these entries from your exported results.

While the query to gather the information is very similar the SQL instance that you connect to to retrieve this information is different depending on which version you’re using.  In OCS 2007 R2 all of this information was stored in the rtcdyn database on the SQL instance that you defined when first creating the pool.  Because of the changes to the registrar functionality in Lync Server 2010 to support survivability, the information that we’re looking for has moved to the RTCLOCAL SQL instance that is stored on each registrar.

You can see this if you compare the HomedResourceDynamic table in the rtcdyn database between the Front End Pool SQL Instance and one of the Front End Server’s RTCLOCAL SQL Instance:

Front End Pool SQL Instance

RTCLOCAL SQL Instance

 

For row 2, OwnerId 12 corresponds to my Lync test user that has logged into the client.  You can see that the information that we’re looking for, LastNewRegisterTime, only gets populated in the RTCLOCAL SQL instance on the Front End Server.  So this means that in Lync Server 2010 you don’t have one place you can go for all of the users homed on that pool.  You will need to run the query and aggregate the data from every registrar in the pool, as well as any SBA/SBS deployed.  The other issue that comes up in an Enterprise Edition pool with multiple Front End Servers is that when users fail-over to another Front End Server in the pool, there is a record created in that Front End Server’s RTCLOCAL rtcdyn database.  After you run the queries and have exported all of the results you would want to clean up the duplicate entries so that you weren’t reporting inflated numbers.

Even though there’s a little work involved in gathering the information this is a fairly easy way to gauge adoption and see which of your users are actually using the OCS/Lync.

Using the Lync Server 2013 Monitoring Server

If you have the Monitoring Server role configured in your environment, and for Lync Server 2013 everyone should!, you can use information contained in the LcsCDR database to pull back the last time a user signed in.  You can run the following query* to pull back the user’s SIP URI and their last login time:

USE LcsCDR
SELECT dbo.Users.UserUri, dbo.UserStatistics.LastLogInTime
FROM dbo.UserStatistics
JOIN dbo.Users ON dbo.Users.UserId = dbo.UserStatistics.UserId
ORDER BY UserUri

Which produces the following output:

The advantage to using the Monitoring Server to obtain this data is that unlike the information contained in the rtcdyn database, the information from the LcsCDR data will persist even when the user isn’t signed into Lync.

 

*These queries are provided for you to use at your own risk.  Please make sure you test before running in a production environment.

728x90
728x90

use rtc


declare @sipQuery nvarchar(250)

set @sipQuery = 'test1@contoso.com'


select FE.Fqdn,R.UserAtHost, * from FrontEnd FE

join RoutingGroupAssignment RGA

On FE.FrontEndId = RGA.FrontEndId

join ResourceDirectory RD

on RGA.RoutingGroupId = RD.RoutingGroupId

join Resource R

on RD.ResourceId = R.ResourceId

where R.UserAtHost = @sipQuery


Aggregated Presence stateDescription

3,000-4,499

Available

4,500-5,999

Available - Idle

6,000-7,499

Busy

7,500-8,999

Busy - Idle

9,000-11,999

Do Not Disturb

12,000-14,999

Be Right Back

15,000-17,999

Away

18,000+

Offline


참고

https://msdn.microsoft.com/en-us/library/bb878933.aspx

http://mikestacy.typepad.com/mike-stacys-blog/2009/08/are-you-really-away.htmlㄴ

728x90
728x90

use rtc

declare @sipQuery nvarchar(250)
set @sipQuery = 'sipusername%'

select Publisher, MIN(Status) as Status
from
(select Publisher, Status=
CASE
when Availability BETWEEN 0 AND 2999 then 'Not defined:'+Availability
when Availability BETWEEN 3000 AND 4499 then 'Available'
when Availability BETWEEN 4500 and 5999 then 'Available - Idle'
when Availability BETWEEN 6000 and 7499 then 'Busy'
when Availability BETWEEN 7500 and 8999 then 'Busy - Idle'
when Availability BETWEEN 9000 and 11999 then 'Do not Disturb'
when Availability BETWEEN 12000 and 14999 then 'Be right back'
when Availability BETWEEN 15000 and 17999 then 'Away'
when Availability > 18000 then 'Offline'
end
from
(
select Publisher,
substring(
substring(PublicationDocument,patIndex('%<availability>%',PublicationDocument)+14,50),0,
patIndex('%<availability>%',substring(PublicationDocument,patIndex('%<availability>%',PublicationDocument)+14,50))
) Availability
from
(select UserAtHost Publisher,ContainerNum,CONVERT(varchar(4000),convert(varbinary(4000),Data)) PublicationDocument
from rtcdyn.dbo.PublishedInstance tblPublishedInstance,
rtc.dbo.Resource tblResource
where tblPublishedInstance.PublisherId = tblResource.ResourceId) as PublishedDocuments
where LEN(replace(PublicationDocument,'aggregateState','')) < LEN(PublicationDocument)
and ContainerNum = 2
) as PublisherAndAvailability
where Publisher like @sipQuery
union
select UserAtHost Publisher, 'Offline-Not Registered Here' Status
from rtc.dbo.Resource
where UserAtHost like @sipQuery) as PublisherAndStatus
group by Publisher


참고

http://mikestacy.typepad.com/mike-stacys-blog/sql/

Container 테이블 설명

https://msdn.microsoft.com/en-us/library/bb879521.aspx

https://msdn.microsoft.com/en-us/library/office/dn454664.aspx

Access Control List Containers

Office Communications Server creates these reserved containers to provide access control functionality.

Container IDDescription

100

Public, Federated subscribers

200

Workplace subscribers

300

Team member subscribers

400

Personal subscribers

32000

Blocked subscribers


Special Containers

Office Communications Server defines special containers for receiving published data.

Container IDDescription

0

A container with an exclusive access scope.

1

Self-presence category data, which includes userPropertiesalertsrccOptionsuserInformation, and calendarData.

2

The server aggregates user, machine, phone and calendar states published to this container. The states are published to container 100, 200, or 400.

3

The server aggregates presence states in this container and publishes the aggregated computer and user states to container 300.


728x90
728x90
  • Exchange Server에서 PartnerApplication 설정

    "C:\Program Files\Microsoft\Exchange Server\V15\Scripts\Configure-EnterprisePartnerApplication.ps1 -AuthMetaDataUrl 'https://pool01.koreare.com/metadata/json/1' -ApplicationType Lync"

       

       

    • SFB 서버에서 서버간 인증구성

       

    • SFB서버에서 Exchange 서버를 파트너어플리케이션으로 생성

    New-CsPartnerApplication -Identity Exchange -ApplicationTrustLevel Full -MetadataUrl "https://autodiscover.koreare.com/autodiscover/metadata/json/1"

       

    • SFB Server에서 테스트 진행(success면 성공)

PS C:\Users\administrator.KOREARE> Test-CsExStorageConnectivity -sipuri "iu@kore

are.com" -Verbose

자세한 정보 표시: Successfully opened a connection to storage service at

localhost using binding: NetNamedPipe.

자세한 정보 표시: Create message.

자세한 정보 표시: Execute Exchange Storage Command.

자세한 정보 표시: Processing web storage response for ExCreateItem Success.,

result=Success, activityId=9b682e2e-536a-481c-b8b9-749ad889ac7a, reason=.

자세한 정보 표시: Activity tracing:

2016-04-19 08:10:58.966 Lookup user details, sipUri=sip:iu@koreare.com,

smtpAddress=iu@koreare.com, sid=S-1-5-21-1919050813-91945802-1330746039-1638,

upn=iu@koreare.com, tenantId=00000000-0000-0000-0000-000000000000

2016-04-19 08:10:59.014 Autodiscover, send GetUserSettings request,

SMTP=iu@koreare.com, Autodiscover

Uri=https://autodiscover.koreare.com/autodiscover/autodiscover.svc, Web

Proxy=<NULL>

2016-04-19 08:10:59.044 Autodiscover.EWSMA trace,

type=AutodiscoverRequestHttpHeaders, message=<Trace

Tag="AutodiscoverRequestHttpHeaders" Tid="82" Time="2016-04-19 08:10:59Z">

POST /autodiscover/autodiscover.svc HTTP/1.1

Content-Type: text/xml; charset=utf-8

Accept: text/xml

User-Agent: ExchangeServicesClient/15.00.1005.003

   

   

</Trace>

   

2016-04-19 08:10:59.063 Autodiscover.EWSMA trace, type=AutodiscoverRequest,

message=<Trace Tag="AutodiscoverRequest" Tid="82" Time="2016-04-19 08:10:59Z"

Version="15.00.1005.003">

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope

xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover"

xmlns:wsa="http://www.w3.org/2005/08/addressing"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Header>

<a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>

   

<wsa:Action>http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscove

r/GetUserSettings</wsa:Action>

   

<wsa:To>https://autodiscover.koreare.com/autodiscover/autodiscover.svc</wsa:To>

   

</soap:Header>

<soap:Body>

<a:GetUserSettingsRequestMessage

xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover">

<a:Request>

<a:Users>

<a:User>

<a:Mailbox>iu@koreare.com</a:Mailbox>

</a:User>

</a:Users>

<a:RequestedSettings>

<a:Setting>InternalEwsUrl</a:Setting>

<a:Setting>ExternalEwsUrl</a:Setting>

<a:Setting>ExternalEwsVersion</a:Setting>

</a:RequestedSettings>

</a:Request>

</a:GetUserSettingsRequestMessage>

</soap:Body>

</soap:Envelope>

</Trace>

   

2016-04-19 08:10:59.569 Autodiscover.EWSMA trace,

type=AutodiscoverResponseHttpHeaders, message=<Trace

Tag="AutodiscoverResponseHttpHeaders" Tid="82" Time="2016-04-19 08:10:59Z">

HTTP/1.1 200 OK

Transfer-Encoding: chunked

request-id: b628865a-b7b6-4244-886b-2bce32c62d2c

X-CalculatedBETarget: ex16.koreare.com

X-DiagInfo: EX16

X-BEServer: EX16

X-FEServer: EX16

Cache-Control: private

Content-Type: text/xml; charset=utf-8

Date: Tue, 19 Apr 2016 08:10:59 GMT

Set-Cookie:

X-BackEndCookie=actas1(sid:S-1-5-21-1919050813-91945802-1330746039-1638|smtp:iu

@koreare.com|upn:iu@koreare.com)=u56Lnp2ejJqBmZrHnc3KzJzSmcjNztLLzZ7I0p2bx57SnJ

qdzs2dy8nGyczGgYHNz87J0s/K0s7Gq8/Hxc7PxcrGgZSQjZqejZrRnJCSgc8=; expires=Thu,

19-May-2016 08:10:59 GMT; path=/autodiscover; secure; HttpOnly

Server: Microsoft-IIS/8.5

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

   

   

</Trace>

   

2016-04-19 08:10:59.570 Autodiscover.EWSMA trace, type=AutodiscoverResponse,

message=<Trace Tag="AutodiscoverResponse" Tid="82" Time="2016-04-19 08:10:59Z"

Version="15.00.1005.003">

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:a="http://www.w3.org/2005/08/addressing">

<s:Header>

<a:Action

s:mustUnderstand="1">http://schemas.microsoft.com/exchange/2010/Autodiscover/Au

todiscover/GetUserSettingsResponse</a:Action>

<h:ServerVersionInfo

xmlns:h="http://schemas.microsoft.com/exchange/2010/Autodiscover"

xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

<h:MajorVersion>15</h:MajorVersion>

<h:MinorVersion>1</h:MinorVersion>

<h:MajorBuildNumber>225</h:MajorBuildNumber>

<h:MinorBuildNumber>41</h:MinorBuildNumber>

<h:Version>Exchange2015</h:Version>

</h:ServerVersionInfo>

</s:Header>

<s:Body>

<GetUserSettingsResponseMessage

xmlns="http://schemas.microsoft.com/exchange/2010/Autodiscover">

<Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

<ErrorCode>NoError</ErrorCode>

<ErrorMessage />

<UserResponses>

<UserResponse>

<ErrorCode>NoError</ErrorCode>

<ErrorMessage>오류가 없습니다.</ErrorMessage>

<RedirectTarget i:nil="true" />

<UserSettingErrors />

<UserSettings>

<UserSetting i:type="StringSetting">

<Name>InternalEwsUrl</Name>

<Value>https://mail.koreare.com/EWS/Exchange.asmx</Value>

</UserSetting>

<UserSetting i:type="StringSetting">

<Name>ExternalEwsUrl</Name>

<Value>https://mail.koreare.com/ews/exchange.asmx</Value>

</UserSetting>

<UserSetting i:type="StringSetting">

<Name>ExternalEwsVersion</Name>

<Value>15.01.0225.000</Value>

</UserSetting>

</UserSettings>

</UserResponse>

</UserResponses>

</Response>

</GetUserSettingsResponseMessage>

</s:Body>

</s:Envelope>

</Trace>

   

2016-04-19 08:10:59.605 Autodiscover, received GetUserSettings response,

duration Ms=589, response=NoError

2016-04-19 08:11:01.697 Lookup user details, sipUri=sip:iu@koreare.com,

smtpAddress=iu@koreare.com, sid=S-1-5-21-1919050813-91945802-1330746039-1638,

upn=iu@koreare.com, tenantId=00000000-0000-0000-0000-000000000000

자세한 정보 표시: Items choice type: CreateItemResponseMessage.

자세한 정보 표시: Response message, class: Success, code: NoError.

자세한 정보 표시: Item:

Microsoft.Rtc.Internal.Storage.Exchange.Ews.MessageType, Id:

AAMkADM3YWM1NGU3LWI2ZmQtNGE3OS1iZjkxLWEyNWI3YzMyNzlkNABGAAAAAAASKHyaongGQoN9klK

qwo7tBwDYpKMYqsX0T5qOmJzkL3KFAAAAlsY0AADYpKMYqsX0T5qOmJzkL3KFAAAK/EftAAA=,

change key: CQAAABYAAADYpKMYqsX0T5qOmJzkL3KFAAAK+5Gs, subject: , body: .

자세한 정보 표시: Is command successful: True.

Test passed.

PS C:\Users\administrator.KOREARE>

   

   

  • SFB서버에서 Exchange 트러스트 어플리케이션 풀 생성 해줍니다.(하기는 미리 구성 되어 있어서 설정값만 수정 후 조회했습니다.)

    또한 5199포트로 OutlookWebapp에 대한 트러스트어플리케이션 생성

   

  • Exchange 서버에서 OCS 사용 설정

   

  • Exchange 서버에서 IM(노란색 참조)

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>Set-OwaMailboxPolicy -Identity "Default" -InstantMessagingEn

abled $True -InstantMessagingType "OCS"

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>New-SettingOverride SetIMServerNameEX16 -Server EX16 -Compon

ent OwaServer -Section IMSettings -Parameters @('IMServerName=pool01.koreare.com') -Reason "OWA IM config"

   

   

RunspaceId : 58f32e19-d237-4984-90e0-9cf1b5a618a9

ComponentName : OwaServer

SectionName : IMSettings

FlightName :

ModifiedBy : koreare.com/Users/Administrator

Reason : OWA IM config

MinVersion :

MaxVersion :

FixVersion :

Server : {EX16}

Parameters : {IMServerName=pool01.koreare.com}

XmlRaw : <S CN="OwaServer" SN="IMSettings" MB="koreare.com/Users/Administrator" R="OWA IM config"><Ss><S>EX1

6</S></Ss><Ps><P>IMServerName=pool01.koreare.com</P></Ps></S>

AdminDisplayName :

ExchangeVersion : 0.1 (8.0.535.0)

Name : SetIMServerNameEX16

DistinguishedName : CN=SetIMServerNameEX16,CN=Setting Overrides,CN=Global Settings,CN=koreare,CN=Microsoft Exchange,CN=

Services,CN=Configuration,DC=koreare,DC=com

Identity : SetIMServerNameEX16

Guid : dbccc5dc-b624-413b-8062-2eba1d7bebd1

ObjectCategory : koreare.com/Configuration/Schema/ms-Exch-Config-Settings

ObjectClass : {top, msExchConfigSettings}

WhenChanged : 2016-04-19 오후 5:53:43

WhenCreated : 2016-04-19 오후 5:53:43

WhenChangedUTC : 2016-04-19 오전 8:53:43

WhenCreatedUTC : 2016-04-19 오전 8:53:43

OrganizationId :

Id : SetIMServerNameEX16

OriginatingServer : DC01.koreare.com

IsValid : True

ObjectState : Unchanged

   

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>New-SettingOverride SetIMCertificateThumbprintEX16 -Server E

X16 -Component OwaServer -Section IMSettings -Parameters @('IMCertificateThumbprint=D2A9B625C0DD80B594AA0EE7039EB5D078D

2B586') -Reason "OWA IM Config"

   

   

RunspaceId : 58f32e19-d237-4984-90e0-9cf1b5a618a9

ComponentName : OwaServer

SectionName : IMSettings

FlightName :

ModifiedBy : koreare.com/Users/Administrator

Reason : OWA IM Config

MinVersion :

MaxVersion :

FixVersion :

Server : {EX16}

Parameters : {IMCertificateThumbprint=D2A9B625C0DD80B594AA0EE7039EB5D078D2B586}

XmlRaw : <S CN="OwaServer" SN="IMSettings" MB="koreare.com/Users/Administrator" R="OWA IM Config"><Ss><S>EX1

6</S></Ss><Ps><P>IMCertificateThumbprint=D2A9B625C0DD80B594AA0EE7039EB5D078D2B586</P></Ps></S>

AdminDisplayName :

ExchangeVersion : 0.1 (8.0.535.0)

Name : SetIMCertificateThumbprintEX16

DistinguishedName : CN=SetIMCertificateThumbprintEX16,CN=Setting Overrides,CN=Global Settings,CN=koreare,CN=Microsoft E

xchange,CN=Services,CN=Configuration,DC=koreare,DC=com

Identity : SetIMCertificateThumbprintEX16

Guid : f14fe273-9d77-49f5-9c8e-ec8cf8ade2b0

ObjectCategory : koreare.com/Configuration/Schema/ms-Exch-Config-Settings

ObjectClass : {top, msExchConfigSettings}

WhenChanged : 2016-04-19 오후 5:55:10

WhenCreated : 2016-04-19 오후 5:55:10

WhenChangedUTC : 2016-04-19 오전 8:55:10

WhenCreatedUTC : 2016-04-19 오전 8:55:10

OrganizationId :

Id : SetIMCertificateThumbprintEX16

OriginatingServer : DC01.koreare.com

IsValid : True

ObjectState : Unchanged

   

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>Get-ExchangeDiagnosticInfo -Server $ENV:COMPUTERNAME -Proces

s Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh

   

RunspaceId : 58f32e19-d237-4984-90e0-9cf1b5a618a9

Result : <Diagnostics>

<ProcessInfo>

<id>2168</id>

<serverName>EX16</serverName>

<startTime>2016-04-15T00:28:38.8612397Z</startTime>

<currentTime>2016-04-19T08:55:56.1901401Z</currentTime>

<lifetime>4.08:27:17.3289004</lifetime>

<threadCount>24</threadCount>

<handleCount>1198</handleCount>

<workingSet>83.57 MB (87,633,920 bytes)</workingSet>

</ProcessInfo>

<Components>

<VariantConfiguration>

<Overrides Updated="2016-04-19 오전 8:55:58">

<SettingOverride>

<Name>SetIMCertificateThumbprintEX16</Name>

<Reason>OWA IM Config</Reason>

<ModifiedBy>koreare.com/Users/Administrator</ModifiedBy>

<ComponentName>OwaServer</ComponentName>

<SectionName>IMSettings</SectionName>

<Status>Accepted</Status>

<Message>This override synced to the server but whether it applies to the services running on t

his server depends on the override parameters, current configuration and the context.</Message>

<Parameters>

<Parameter>IMCertificateThumbprint=D2A9B625C0DD80B594AA0EE7039EB5D078D2B586</Parameter>

</Parameters>

</SettingOverride>

<SettingOverride>

<Name>SetIMServerNameEX16</Name>

<Reason>OWA IM config</Reason>

<ModifiedBy>koreare.com/Users/Administrator</ModifiedBy>

<ComponentName>OwaServer</ComponentName>

<SectionName>IMSettings</SectionName>

<Status>Accepted</Status>

<Message>This override synced to the server but whether it applies to the services running on t

his server depends on the override parameters, current configuration and the context.</Message>

<Parameters>

<Parameter>IMServerName=pool01.koreare.com</Parameter>

</Parameters>

</SettingOverride>

</Overrides>

</VariantConfiguration>

</Components>

</Diagnostics>

Identity :

IsValid : True

ObjectState : New

   

   

   

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>

   

  • 클라이언트에서 OWA에 접속하여 Presence 상태가 나오는지 확인
  • OWA에서 IM 테스트


728x90
728x90

1

Step by Step: Adding Your Second Lync Standard Edition Server 2013 & Creating an Associated Backup Pool for Resiliency Part 4

By Matt Landis __on 8/06/2012 10:23:00 AM

We are on a journey installing various Lync Server 2013 roles. In today's step by step, we will setup our 2nd Lync Server Standard Edition pool and then set it up as a Backup Registrar so automatic failover can happen. We will also look at Lync Server 2013's new failover capabilities that allow full client capability to be restored in the event of a disaster. To use this blog the only other lab you need to have done is Part 1.

Previous Articles in this Series:

  • Part 1 Step by Step Installing Lync Server 2013 Standard Edition Front End
  • Part 2- Step by Step Installing Lync Server 2013 SE Monitoring Server
  • Part 3 Step by Step Installing Lync Server 2013 Persistent Chat Server
  • Part 4 - Step by Step Installing Your 2nd Lync Server 2013 SE Server Associated Backup Pool for Resiliency

    Prepare the 2nd Front End Server: Prerequisites

    See Lync Server 2013 prerequisites here. Installing your 2nd Lync Pool is much like installing the first. We will go over the steps below briefly, with special notes. But for detailed notes on installing an FE server, just refer to the Part1 blog in this series.

    Install Lync Server 2013

    Insert Lync Server 2013 CD, and when you see popup below, click Yes

    Once the Deployment Wizard appears we are done here for now.

    Open Topology Builder to Add Your 2nd Front End Server/Pool

    Right Click on "Standard Edition Front End Servers" | New Front End Pool

    NOTE: While the topology builder and this blog refer to a Standard Edition Front End Pool, just be aware that a Standard Edition Front End Pool really is just one Front End Server, because there only can be one server in a Standard Edition Pool.

    Next | Enter our Backup Front End FQDN (FE02.lab.local) | Next

    Check Conferencing, Enterprise Voice. (Note: you will not be able to check CAC because only 1 per Site)

    Now instead of screenshots for each screen, we'll just note what we want to check.

  • Collocate Mediation = Yes | Next
  • Enable and Edge Pool = No | Next
  • let defaults | Next
  • let Defaults (Note: you need to create this share just like your original share) | Next
  • let defaults | Next
  • let defaults | Next
  • Action | Topology | Publish

    Goto the Primary (FE01.lab.local) Standard Server and Open Lync Server 2013 Deployment Wizard

    Click on "Install or Update Lync Server System"

    step 2 and Run

    After it completes, click Finish.

    Now Goto the Backup (FE02.lab.local) Standard Server and Open Lync Server 2013 Deployment Wizard

    Click on "Install or Update Lync Server System"

  • Step 1 Run (15-30minute wait) Finish
  • Step 2: Run | Next (10minutes wait)
  • Step 3
  • Step 4

    We'll Test Our 2nd Pool/Server By Moving Users to It

    To test, log into Lync Server control panel. Notice you will now be asked which Lync pool you want to log in to. Let's select FE01.lab.local.

    Once the LSCP is open well click Users | Find | Select u1@lab.local | Action | Move Selected Users to Pool… |

    Now lets select our new Pool/Server (FE02.lab.local) and click OK.

    After you move a user there is no need to refresh the user list, this is automatically done for you. And, sure enough, the u1@lab.local is now on FE02.lab.local! Great.

    Now lets open Lync 2013 client and login using user u1@lab.local that we just enabled on our 2nd Standard Edition Front End Pool/Server (FE02.lab.local). Good, our new pool works!

    What Happens when we change Pools During an Active Conversation or Call?

    Since we could easily move user(s) to our new Pool/Server with no sweat, now lets get dangerous. Call someone using u1@lab.local and CHANGE POOLS DURING THE CALL. 

    Let's repeat the steps we just took above, but do it during a live call and see what happens.

    Below is a screenshot of what happens if you change pools/servers during a peer to peer call:

  • The Lync 2013 client will momentarily logout and back in again
  • During this time (as you see below) the call continues
  • Sharing continues
  • Video continues
  • As noted in the conversation window, functionality is momentarily limited:
  • Video cannot be started during momentary logout/in
  • Sharing limited and below items will be interrupted
  • Polls
  • whiteboard
  • Powerpoint

    That' pretty cool, right? Yeah.

    Setup a Resilient Pool (aka Associated Backup Pool)

    Now let's setup our 2nd Front End Pool/Server as an Associated backup pool so that if our 1st Front End Pool goes down the clients can automatically failover to the 2nd Front End Pool.

    Open Topology Builder and download the topology.

    Next, we'll edit the primary "Standard Edition Front End Servers" by right clicking and click "Edit Properties"

    Now we can define our Resiliency settings

  • Associated backup pool = FE02.lab.local; (Note the warning about having both FE's in the same site. For our lab, and in some production we can ignore this)
  • Automatic = Checked
  • Failover = 30secs (for lab purposes, this would be short for production)
  • Failback = 30secs (for lab purposes)
  • Then click OK to finish.

    Let's Publish the Topology by clicking: Action | Topology | Publish | Next |

    Open text file to see what you should do next. In our case we are instructed to run Install or Update Setup/Update on FE01 and FE02. Now click Finish.

    Based on our "next steps" instructions noted above, lets open Lync Server Deployment Wizard on FE01.lab.local and click on "Install or Update Lync Server System"

  • Step 2 Run | Next |Next
  • Step 4 Run | Next | (this will get our new Lync server Backup Service running)

    Lets open Lync Server Deployment Wizard on FE02.lab.local and click on "Install or Update Lync Server System"

  • Step 2 Run | Next
  • NOTE: If Step 2 fails with "Can not update database XDS"  error then we need to manually install the rtc database using the PS command below:
  • install-csdatabase centralmanagementdatabase sqlserverfqdn FE02.lab.local sqlinstancename rtc
  • Now run Step 2 again.
  • Step 3 (if necessary)
  • Step 4

    Run the below Powershell commands on your FE01.lab.local to ensure conferencing data is replicated:

  • Invoke-CSBackupServiceSync PoolFqdn FE01.lab.local
  • Invoke-CSBackupServiceSync PoolFqdn FE02.lab.local

    Add DNS SRV Record for Backup Pool/Server

    Now lets go into DNS and add a record for our Backup Pool /Server. This SRV record is necessary so that if the first server (FE01.lab.local in our lab) goes down, the client can find the backup Pool/Server.

    So let open the DNS server management and add the SRV record. The things that are important:

  • Service = _sipinternaltls
  • Protocol = _tcp
  • Priority = 10 (take note: this value is different than your initial SRV record)
  • Weight = 10 (take note: this value is different than your initial SRV record)
  • Port number = 5061
  • Host offering this server = FE02.lab.local

    After you have added this DNS record you might want to verify it has taken effect on the client PC by running NSLookup on the clients you will be testing.

  • NSLookup
  • set type=srv
  • _sipinternaltls._tcp.lab.local

    You Might Need This Step, But Only do it if Needed: Remove The Cert Without the Backup Server Name in it

    NOTE: Please, take a minute and thank Dustin Hannifin and Jason Lee for providing this crucial step in this blog post

    With both Primary and Backup Front End Server running do the following:

    Exit Lync 20013 client on client machine.

    On same client machine: Open MMC

    File | Add/Remove Snap-in | Certificates | My User Account | Ok

    Navigate to: Personal | Certificates and delete the cert named same as your Lync username.

    Now let log back into Lync 2013 client.

    Now, Let's Test Resiliency by Disabling NIC on Primary Front End (FE01.lab.local)

    Make sure all your users (that you want to test resiliency for) are homed on FE01.lab.local. Next, we'll simulate our FE01.lab.local machine being down by disabling the NIC.

    Now around 30 seconds, our client(s) should log out. Sure enough!

    Now they will try to login to the backup pool (in this case FE02.lab.local)

    NOTE: We setup our failover to happen in 30seconds. I've noticed in my lab the failing Lync clients will logout very near 30 seconds, but it could take several minutes till the clients are able to log back into the Associated Backup Pool/Server (FE02.lab.local). (ie: be fully failed over) I haven't taken the time to investigate if this is my lowly lab's performance 

    , or something built into Lync. (if someone knows, please post a comment)

    But sure enough, it logged into backup pool! You will notice the Lync 2013 client let's you know you have some limitations:

  • Contact List is unavailable
  • Call Forwarding may not be working
  • Delegates and Team-Call may not be receiving calls
  • Limited chat room access
  • Etc.

    Now if we enable the NIC on FE01.lab.local the clients should Failback to FE01.lab.local in 30 seconds. (NOTE: on my lab some clients would failback as soon as 10 seconds.)

    Next We Will Take a Look at New Lync Server 2013 Failover Options

    Much of what we have discussed in this blog so far is largely the functionality you will find in Lync Server 2010. (I suspect you could use most of the above steps in Lync 2010.) But with Lync Server 2013, the Lync Server administrator can now failover the CMS and the failed pool so that the "Limited Functionality due to outage" is removed. Let's get started with our failover.

    Our first step is to find out where the Active Central Management Database is hosted. To do this we run the PowerShell:

  • Get-CsService CentralManagement

    As shown below, FE01.lab.local is the PoolFqdn (we will refer to this as $CMS_Pool) of the currently Active CMS.

    The next step is to check if the the $CMS_Pool is running Lync Server 2013. You can do this in Topology Builder (in our lab we know it is, but in a live environment we might not) If the $CMS_Pool is running Lync 2013 we can use this PowerShell to see who it's backup pool is:

    Get-CsPoolBackupRelationship PoolFQDN $CMS_Pool

    As shown below we can see the $Backup_Pool is FE02.lab.local

    Next we will see if the $CMS_Pool is available right now:

    Get-CsManagementStoreReplicationStatus CentralManagementStoreStatus

    Below we have an example how this command will look with the $CMS_Pool available.

    Now lets disable the NIC on $CMS_Pool (ie FE01.lab.local) to simulate server down. Our primary Lync FE is now down! (shown below)

    Now run the Get-CsManagementStoreReplicationStatus CentralManagementStoreStatus  command again. Note that the command will fail/error out if the $CMS_Pool/FE01.lab.local is not available.

    (NOTE: If this is a Ent. Edition server you will need to check which Back End holds the primary CMS using: Get-CsDatabaseMirrorState -DatabaseType CMS -PoolFqdn <Backup_Pool Fqdn> . Read more about this command by Clicking Here. Running this command on Std. Edition will fail. On a Std. Edition server there is only one server so we know which it is. )

    Next we will run the command to failover the Central Management Server to our Backup Server:

  • Invoke-CsManagementServerFailover -BackupSqlServerFqdn FE02.lab.local BackupSqlInstanceName RTC Force

    Now lets verify the move happened by running:

  • Get-CsManagementStoreReplicationStatus CentralManagementStoreStatus

    Sure enough! the new ActiveMasterFQDN is now FE02.lab.local (as shown below). Great!

    Now we can fail over the Pool by running:

  • Invoke-CsPoolFailOver PoolFqdn FE01.lab.local Disastermode Verbose

    After runningVoila! The Lync Client services are automatically restored to Lync 2013and the "Limited Functionality" notice disappears with no user interaction!

    Notes:

  • On my 3 user lab this script took about 50 seconds to complete. After it completed I waited a little over a minute until full capability was restored to the Lync client!
  • The Chat service was not restored because resiliency was not setup in our lab for this service.

    Conclusion

    Well--yahoo! We have successfully setup a Lync Standard Edition Associated Backup Pool and we have demonstrated Lync Server 2013's very improved complete Failover resiliency.

    Continue your lab with more articles in this Lync Server 2013 Step by Step Series:

  • Part 1 Step by Step Installing Lync Server 2013 Standard Edition Front End
  • Part 2- Step by Step Installing Lync Server 2013 SE Monitoring Server
  • Part 3 Step by Step Installing Lync Server 2013 Persistent Chat Server
  • Part 4 - Step by Step Installing Your 2nd Lync Server 2013 SE Server Associated Backup Pool for Resiliency
  • Part 5 Step by Step Enabling Lync Server 2013 Enterprise Voice Features, Response Groups and Managers
  •    

    Special Thanks to Elan Shudnow and his great article on Lync 2010 Resiliency:

    http://www.shudnow.net/2012/05/04/lync-2010-central-site-resilience-w-backup-registrars-failovers-and-failbacks-part-3/

       

    http://social.technet.microsoft.com/wiki/contents/articles/9289.second-lync-standard-edition-server-to-provide-a-limited-high-availability-en-us.aspx

    http://jasonmlee.net/archives/459

  • See this post
  • If you want to Fail Back to FE01.lab.local

  • Invoke-CsPoolFailback -PoolFQDN FE01.lab.local Verbose  (may take 10-15minutes; Lync will logout/in near end)
  • Invoke-CsManagementServerFailover -BackupSqlServerFqdn FE02.lab.local BackupSqlInstanceName RTC Force ( this just takes 10secs)

       

    출처: <http://windowspbx.blogspot.kr/2012/08/step-by-step-adding-your-second-lync.html>

       

       

728x90
728x90

SFB Powershell을 띄운 후 아래와 같이 입력


PS C:\>Export-CsArchivingData -Identity "archivingdatabase:sfbdb.koreare.com" -StartDate 3/1/2016 -OutputFolder c:\

Total number of sessions: 41  Successfully exported sessions: 41 Failed session

s: 0 



출력된 화면

c:\밑으로 백엔드FQDN_아카이빙폴더명으로 날자별 폴드가 생성 됨



eml형식 아웃룩으로 열어보자

아웃룩에서 연 화면


FYI...https://technet.microsoft.com/en-us/library/gg398452.aspx

728x90
728x90

Lync/SFB 에서 정책을 백업 및 복구 하는 방법입니다.


Export 방법

Get-CsClientPolicy | Export-Clixml -Path "c:\csclientpolcy.xml"


Import 방법

Import-Clixml "C:\csclientpolcy.xml" | Set-CsClientPolicy


끝.


참고

Lync 2013 Backup Script

http://lyncscripts.blogspot.kr/2013/09/lync-2013-backup-script.html
I have to admit the Lasse' scripting talents (and his willingness to share) has delivered some awesome scripts. Todays blog is evidence of his skills...his work is found here http://tech.rundtomrundt.com/p/lync-scripts.html

Thanks buddy!

<#
.Synopsis
   This is a script to make a backup of your Lync 2013 Enterprise edition server environment.
   It should be run on a windows server 2012, and a 2013 Lync server.
.DESCRIPTION
    A script to backup vital components in a Lync Enterprise Edition deployment
    Created by Lasse Nordvik Wedø - All rights reserved
    Http://tech.rundtomrundt.com

    - This script is for a Enterprise Edition Server.
    - The script has only been tested in single site topology. I suspect adjustments must be made for deployments with more than one site (If anyone would do so, or let me have access to such a deployment, please let me know)
    - This script has been tested with a co location of all databeses. If you require it to backup your Monitoring/archiving databases from seperate SQL servers, you must add these sources to the script.
    - The script should be able to run without any modification or input, unless you want to use other paths than I have entered.
    - The script must be run on a server where Lync PS is available.
    - If the script must be run in a PS3 environment, and will load all nessecary modules automatically
    - My script creates a directory C:\lyncbackup\, this may be edited if you like.
    - Certificates will only be backed up if you allowed for this when requesting and creating certificates.
    - Certificate backup is only done on the machine where the script is run
    - The creation of the zipfile can take a while. The script finishes before the zipfile is finished (If anyone know how to wait for this task before quitting the script, please let me know).
    - I highly recommend you test the script in your Lab, before running in your production environment



    V 1.0 - July 2012 - Created for Standard Edition
    V 1.1 - August 2012 - added a cleanup rutine, and zip rutine
    V 1.2 - October 2012 - Completed for Enterprise Edition
    V 2.0 - March 2013 - Edited for a Lync 2013 environment.
.EXAMPLE
   Backupscript - Enterprise EDT v2 (Lync 2013).ps1
   #>

$date = "{0:yyyy_MM_dd-HH_mm}" -f (get-date)

#################################################################
#
# Getting Lync pool information
#
#################################################################

$sysinfo = Get-WmiObject -Class Win32_ComputerSystem
$fqdnLyncReal = “{0}.{1}” -f $sysinfo.Name, $sysinfo.Domain
$fqdnLyncpool = Get-CsService -CentralManagement | Select-Object PoolFqdn
$fqdnLync = $fqdnLyncpool.PoolFqdn.tolower()

#################################################################
#
# This will store Backup in C:\lyncbackup\
#
# Setting File and share paths
# Defining filenames
#
# Edit these to for automation as you please
#
#################################################################


[system.Console]::ForegroundColor = [System.ConsoleColor]::Yellow
$filepath = "c:\lyncbackup\"
$filepathshare = "c:\lyncbackup"
$fileshare = Get-CsService -FileStore | Select-Object UncPath
$filesharepath = $fileshare.UncPath.tolower()

$filepath1 = $filepath + $date
$filepath2 = $filepath1 + "\FileshareData"
$filepath3 = $filepath1 + "\SQLBU"

$backupfile1 = $filepath1 + "\CsConfiguration.zip"
$backupfile10 = $filepath1 + "\RGSConfiguration.zip"
$backupfile11 = $filepath + "\BACKUP " + $date +".zip"
$backupfile12 = $filepath1 + "\Topology " + $date +".xml"
$backupfile13 = $filepath1 + "\UserData.zip"
$backupfile14 = $filepath1 + "\PersistantChatData.zip"
$backupfile2 = $filepath1 + "\CsLISconfiguration.bak"
$backupfile3 = $filepath1 + "\dbimpexp.xml"
$backupfile4 = $filepath1 + "\DialPlan.xml"
$backupfile5 = $filepath1 + "\VoicePolicy.xml"
$backupfile6 = $filepath1 + "\VoiceRoute.xml"
$backupfile7 = $filepath1 + "\PSTNUsage.xml"
$backupfile8 = $filepath1 + "\VoiceConfiguration.xml"
$backupfile9 = $filepath1 + "\TrunkConfiguration.xml"

$logfile = "c:\Backup_run_" + $date +".log"

$fileshare = "\\" + $fqdnLyncReal + "\lyncbackup"
$backuproot = $fileshare + "\" + $date + "\SQLBU"

Start-Transcript -Path $logfile -Append

Write-Output ("Script started at: " + $date);

New-Item $filepath -type directory -force -Verbose
New-Item $filepath1 -type directory -force -Verbose
New-Item $filepath2 -type directory -force -Verbose
New-Item $filepath3 -type directory -force -Verbose

#################################################################
#
# Creating a fileShare with everyone rigths
# If you already have provisioned a share, where you SQL_service user have full controll over,
# You may skip this.
#
#################################################################

NET SHARE lyncbackup=$filepathshare "/GRANT:Everyone,FULL"

#################################################################
#
# Delete all Files in $filepath older than 5 day(s)
#
#################################################################

$Days = "-5"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Days)
Get-ChildItem $filepath -recurse | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item -Verbose

#################################################################
#
# Exporting your Microsoft Lync Server 2013 topology, policies, and configuration settings to a file.
#
#################################################################

export-csconfiguration -filename $backupfile1 -Verbose

#################################################################
#
# Creating a backup of your topology as an XML file
#
#################################################################

(Get-CsTopology -AsXml).ToString() > $backupfile12

#################################################################
#
# Exports an Enterprise Voice Enhanced 9-1-1 (E9-1-1) configuration to a file in compressed format for backup purposes.
#
#################################################################

export-cslisconfiguration -filename $backupfile2 -Verbose

#################################################################
#
# Exports RGS configuration to a file in compressed format for backup purposes.
#
#################################################################

Export-CsRgsConfiguration -source ApplicationServer:$fqdnLync -FileName $backupfile10 -Verbose

#################################################################
#
# Export User information
#
#################################################################

Export-CsUserData -PoolFqdn $fqdnLync -FileName $backupfile13 -Verbose

#################################################################
#
# Use Xcopy to create copy from fileshare
#
#################################################################

net use y: $filesharepath
cd y:
Xcopy *.* $filepath2 /E /I /Y /H /C
cd $filepath
net use y: /delete

#################################################################
#
# Backing up some of the vital policies and settings
#
#################################################################

Get-CsDialPlan | Export-Clixml -path $backupfile4 -Verbose
Get-CsVoicePolicy | Export-Clixml -path $backupfile5 -Verbose
Get-CsVoiceRoute | Export-Clixml -path $backupfile6 -Verbose
Get-CsPstnUsage | Export-Clixml -path $backupfile7 -Verbose
Get-CsVoiceConfiguration | Export-Clixml -path $backupfile8 -Verbose
Get-CsTrunkConfiguration | Export-Clixml -path $backupfile9 -Verbose

#################################################################
#
# I ran into some file rights issues when backing up the SQL
# Setting ACL on the target forlder of the SQL Backup
# Should not impose any security threat, as the share is removed in the end
#
#################################################################

$Acl = Get-Acl $filepath3
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("Everyone","FullControl","ContainerInherit, ObjectInherit", "None","Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $filepath3 $Acl

#################################################################
#
# Backing up SQL
#
#################################################################

Import-Module SQLPS -DisableNameChecking
$SQLInstance = Get-CsConfigurationStoreLocation
$SQLFQDN = Get-CsService -CentralManagementdatabase | Select-Object PoolFqdn
$InstanceSQL = Get-CsService -CentralManagementDatabase | Select-Object SqlInstanceName
$instancenamesql = $InstanceSQL.SqlInstanceName.toupper()
$SQLServer = $SQLFQDN.PoolFqdn.toupper() 
$Server = $SQLInstance;     # SQL Server Instance.
$inst=$null
$Dest = $backuproot;    # Backup path on server (optional). 
$ServerName = $sysinfo.Name.tostring() 
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo');           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.Management.Sdk.Sfc');           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO');           
# Requiered for SQL Server 2008 (SMO 10.0).           
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMOExtended');

cd SQLSERVER:\SQL\$SQLServer\$instancenamesql\Databases

#start full backups
$cdate = Get-Date -Format MMddyy
foreach($database in (Get-ChildItem -name -force)) {
$dbName = $database
$bakFile = $dest + "\" + $dbName + "_full_" + $cdate + ".bak"
If($dbName -ne "tempdb"){
Backup-SqlDatabase -Database $dbName -BackupFile $bakFile -Initialize -verbose }}

#################################################################
#
# Export Persistant Chat 
# This part of the script will be updated once I can verify it
#
#################################################################

#$SQLInstance = Get-CsConfigurationStoreLocation | Select-Object BackEndServer
#$PersistandBU = $SQLInstance.BackEndServer.ToLower()
#Export-CsPersistentChatData -DBInstance $PersistandBU -FileName $backupfile14

#################################################################
#
# Backing up CERT of local computer
#
#################################################################

dir cert:\localmachine\my |
      Where-Object { $_.HasPrivateKey -and $_.PrivateKey.CspKeyContainerInfo.Exportable } |
      Foreach-Object { [system.IO.file]::WriteAllBytes(
               $filepath1 + "\$($_.thumbprint).pfx",
               ($_.Export('PFX', 'secret')) ) }
#################################################################
#             
# Create the final ZIP file
#
#################################################################
  
Set-Content $backupfile11 ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
$File = Get-ChildItem $backupfile11 -ErrorAction SilentlyContinue
$File = (New-Object -COM Shell.Application).Namespace($File.FullName)
$File.CopyHere($filepath1, 4)

c:
cd \
NET SHARE lyncbackup /y /delete

#write-host "Your backupfile is now storing as $backupfile11"
Write-Output ("Finished at: " + (Get-Date -format  yyyy-MM-dd-HH:mm:ss) + "A logfile has been created as " + $logfile);
Stop-Transcript
[system.Console]::ForegroundColor = [System.ConsoleColor]::White


728x90
728x90

Skype For Business Front-End EnterPrise 배포

 

  1. Front-End 사전 역할 및 기능 설치

Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Dir-Browsing, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Http-Tracing, Web-Basic-Auth, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Scripting-Tools, Web-Mgmt-Compat, Server-Media-Foundation, BITS

   

  1. 재부팅
  2. SFB 관리 도구 설치

       

       

       

    Install Administrative Tools

       

  3. Active Directory 사전 요구사항 설치

    Prepare Active Directory 선택

       

    Step1 실행

       

       

       

    Step2 실행

       

    Step3 실행

       

       

       

       

    Skype4Bussiness 관리 쉘을 열어 아래와 같은 결과가 나오면 복제가 완료 됨.

       

    CSAdministrator에 서비스관리자 계정 추가

       

       

       

       

  4. Topology Builder 구성

    Primary SIP domain 입력

       

    추가 sip domain이 있다면 입력해줍니다. 없어서 패스

       

    Site 이름 입력

       

       

       

       

    전 엔터프라이즈를 Pool FQDN 정의

       

    Front-End Server 추가

       

    PSTN 연동은 없으므로 Pass

       

    IP-PBX 연동 없으므로 체크 해제

       

    내부만 배포하므로 체크해제(나중에 Edge 배포는 별도로 올리겠습니다.)

       

    SFB.Koreare.com\SFBDB(MSCS 구성) Back-End SQL Server 지정


    Skype For Business 공유 폴더 지정(클러스터 파일서버 지정)

       

    내부/외부 웹사이즈 정의

       

    Office Web Apps Server FQDN 지정

       

       

    Archiving DB 지정

       

    Monitoring DB 지정

       

    Topology 설정 완료

       

  5. Admin Access URL 및 CMS Pool 지정

       

    게시

       

       

       

    다음과 같이 오류가 나올경우 아래를 보고 따라하세용

       

    아래와 같이 오류가 났다. 원인은 1433,1434(UDP) 포트가 오픈 되어이어야 한다.

       

       

InstallDatabaseCmdlet.CreateDatabaseForFeature 2016-03-15 오후 5:39:49 Completed with warnings

   

Feature: ApplicationStore 2016-03-15 오후 5:39:49

SQL Instance: SFBDB.koreare.com\SFBDB 2016-03-15 오후 5:39:49

Collocated: False 2016-03-15 오후 5:39:49

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:39:49

Found "RTCUniversalServerAdmins": True 2016-03-15 오후 5:39:49

Found "RTCUniversalReadOnlyAdmins": True 2016-03-15 오후 5:39:49

Warning: Setting SQL Server Show Advanced Options to 1 2016-03-15 오후 5:40:03 Warning

Warning: Setting SQL Server Recover Interval to 5 mins 2016-03-15 오후 5:40:03 Warning

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:40:12

Found "RTCUniversalServerAdmins": True 2016-03-15 오후 5:40:12

Found "RTCUniversalReadOnlyAdmins": True 2016-03-15 오후 5:40:12

Warning: Setting SQL Server Show Advanced Options to 1 2016-03-15 오후 5:40:26 Warning

Warning: Setting SQL Server Recover Interval to 5 mins. 2016-03-15 오후 5:40:26 Warning

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:40:32

Found "RTCUniversalServerAdmins": True 2016-03-15 오후 5:40:32

Found "RTCUniversalReadOnlyAdmins": True 2016-03-15 오후 5:40:32

Warning: Setting SQL Server Show Advanced Options to 1 2016-03-15 오후 5:40:44 Warning

Warning: Setting SQL Server Recover Interval to 5 mins. 2016-03-15 오후 5:40:44 Warning

Log file: C:\Users\administrator.KOREARE\AppData\Local\Temp\2\Create-ApplicationStore-SFBDB.koreare.com_SFBDB-[2016_03_15][17_39_49].log 2016-03-15 오후 5:40:48

   

InstallDatabaseCmdlet.CreateDatabaseForFeature 2016-03-15 오후 5:40:48 Completed with warnings

   

Feature: ArchivingStore 2016-03-15 오후 5:40:48

SQL Instance: SFBDB.koreare.com\SFBDB 2016-03-15 오후 5:40:48

Collocated: False 2016-03-15 오후 5:40:48

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:40:48

Warning: SQL Server Agent start mode was detected as Manual. It must be Auto to ensure that jobs are executed. 2016-03-15 오후 5:41:38 Warning

Log file: C:\Users\administrator.KOREARE\AppData\Local\Temp\2\Create-ArchivingStore-SFBDB.koreare.com_SFBDB-[2016_03_15][17_40_48].log 2016-03-15 오후 5:41:42

   

InstallDatabaseCmdlet.CreateDatabaseForFeature 2016-03-15 오후 5:41:42 Completed with warnings

   

Feature: MonitoringStore 2016-03-15 오후 5:41:42

SQL Instance: SFBDB.koreare.com\SFBDB 2016-03-15 오후 5:41:42

Collocated: False 2016-03-15 오후 5:41:42

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:41:42

Found "CsAdministrator": True 2016-03-15 오후 5:41:42

Found "CSViewOnlyAdministrator": True 2016-03-15 오후 5:41:42

Found "CSServerAdministrator": True 2016-03-15 오후 5:41:42

Warning: SQL Server Agent start mode was detected as Manual. It must be Auto to ensure that jobs are executed. 2016-03-15 오후 5:42:36 Warning

Found "RTCComponentUniversalServices": True 2016-03-15 오후 5:42:37

Warning: SQL Server Agent start mode was detected as Manual. It must be Auto to ensure that jobs are executed. 2016-03-15 오후 5:43:30 Warning

Log file: C:\Users\administrator.KOREARE\AppData\Local\Temp\2\Create-MonitoringStore-SFBDB.koreare.com_SFBDB-[2016_03_15][17_41_42].log 2016-03-15 오후 5:43:31

   

  1. 인증서 생성

[Version]

Signature="$Windows NT$"

[NewRequest]

Subject = "CN=Pool01.koreare.com"

Exportable = true

ExportableEncrypted = true

HashAlgorithm = sha256

KeyLength = 4096

KeySpec = AT_KEYEXCHANGE

KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_KEY_ENCIPHERMENT_KEY_USAGE"

KeyUsageProperty = "NCRYPT_ALLOW_DECRYPT_FLAG | NCRYPT_ALLOW_SIGNING_FLAG"

MachineKeySet = true

ProviderName = "Microsoft RSA SChannel Cryptographic Provider"

ProviderType = 12

SMIME = false

RequestType = CMC

FriendlyName = "Pool01.koreare.com"

[Extensions]

2.5.29.17 = "{text}"

_continue_ = "dns=Pool01.koreare.com&"

_continue_ = "dns=sfbintweb.koreare.com&"

_continue_ = "dns=sfbextweb.koreare.com&"

_continue_ = "dns=meet.koreare.com&"

_continue_ = "dns=sfb01.koreare.com&"

_continue_ = "dns=sfb02.koreare.com&"

_continue_ = "dns=ucupdates.koreare.com&"

_continue_ = "dns=sip.koreare.com&"

_continue_ = "dns=dialin.koreare.com&"

_continue_ = "dns=webscheduler.koreare.com&"

_continue_ = "dns=sfbadmin.koreare.com&"

_continue_ = "dns=lyncdiscover.koreare.com&"

_continue_ = "dns=lyncdiscoverinternal.koreare.com"

 

2.5.29.37 = "{text}"

_continue_ = "1.3.6.1.5.5.7.3.2,"

_continue_ = "1.3.6.1.5.5.7.3.1"

   

  1. Install or Update Skype for Business Server System

먼저 RTCUniversalServerAdmin 그룹에 권한 등록

   

   

   

   

   

   

   

아래와 같이 오류가 났다. KB2982006 핫픽스 설치 해야 한다.

대략적인 내용은 IIS Crash에 대한 핫픽스 인듯하다.

https://support.microsoft.com/en-us/kb/2982006

   

Hotfix 설치

   

   

Back버튼을 눌러 다시 실행 해줍니다.

   

Add feature to list of intended features 2016-03-16 오전 8:45:05 Success

   

Feature: Feature_FTA 2016-03-16 오전 8:45:05

Contained in MSI: MgmtServer.msi 2016-03-16 오전 8:45:05

Requires: Feature_MGMTServer 2016-03-16 오전 8:45:05

   

Add feature to list of intended features 2016-03-16 오전 8:45:05 Success

   

Feature: Feature_MGMTServer 2016-03-16 오전 8:45:05

Contained in MSI: MgmtServer.msi 2016-03-16 오전 8:45:05

Prerequisite: SupportedServerOS 2016-03-16 오전 8:45:05

Requires: Feature_LocalMgmtStore 2016-03-16 오전 8:45:05

   

Add feature to list of intended features 2016-03-16 오전 8:45:05 Success

   

Feature: Feature_LocalMgmtStore 2016-03-16 오전 8:45:05

Contained in MSI: OcsCore.msi 2016-03-16 오전 8:45:05

Prerequisite: SupportedOS 2016-03-16 오전 8:45:05

Prerequisite: SupportedOSNoDC 2016-03-16 오전 8:45:05

Prerequisite: DotNet35 2016-03-16 오전 8:45:05

Prerequisite: SqlUpgradeInstanceRtcLocal 2016-03-16 오전 8:45:05

Prerequisite: SupportedSqlRtcLocal 2016-03-16 오전 8:45:05

Prerequisite: SqlInstanceRtcLocal 2016-03-16 오전 8:45:05

Requires: Feature_OcsCore 2016-03-16 오전 8:45:05

   

Add feature to list of intended features 2016-03-16 오전 8:45:05 Success

   

Feature: Feature_OcsCore 2016-03-16 오전 8:45:05

Contained in MSI: OcsCore.msi 2016-03-16 오전 8:45:05

Prerequisite: WMIEnabled 2016-03-16 오전 8:45:05

Prerequisite: NoOtherVersionInstalled 2016-03-16 오전 8:45:05

Prerequisite: SupportedOS 2016-03-16 오전 8:45:05

Prerequisite: PowerShell 2016-03-16 오전 8:45:05

Prerequisite: VCredist 2016-03-16 오전 8:45:05

Prerequisite: SqlNativeClient 2016-03-16 오전 8:45:05

Prerequisite: SqlClrTypes 2016-03-16 오전 8:45:05

Prerequisite: SqlSharedManagementObjects 2016-03-16 오전 8:45:05

Prerequisite: RemoveOldUcmaWorkflow 2016-03-16 오전 8:45:05

Prerequisite: RemoveOldUcmaRedist 2016-03-16 오전 8:45:05

Prerequisite: UcmaRedist 2016-03-16 오전 8:45:05

   

Role discovered: CMSMaster 2016-03-16 오전 8:45:05

Role discovered: CMSFileTransfer 2016-03-16 오전 8:45:05

Warning: Warning: Not all machines in the current pool appear to be running the same version of Windows Server. This configuration is not supported and will break communication between machines in the pool. Please check that the following machines are all running the same version of Windows Server: 2016-03-16 오전 8:45:05 Warning

Warning: FQDN: sfb01.koreare.com Version: 6.3.9600 2016-03-16 오전 8:45:05 Warning

Warning: FQDN: sfb02.koreare.com Version: Machine inaccessible 2016-03-16 오전 8:45:05 Warning

   

   

   

   

   

   

   

   

   

   

   

   

   

   

재시작

   

서비스 상태 확인

   

  1. 관리자 웹페이지 접속

실버라이트 설치가 필요하다.

   

   

사용자 추가

   

   

   

  1. 클라이언트 접속 확인

사용자 아이비 화면

   

사용자 아이유 화면

   

끝.

728x90
728x90

With the first release of an update for Skype for Business 2015, it is a good opportunity to publish a list of Cumulative Updates. We will try to keep it updated as soon as a new Cumulative Update is released.

Like in the previous versions, this list will include the version for the Core Components. This is because not all components are updated when we apply a Cumulative Update.

The previous lists for the Lync Server can be found in the following links:

Lync Server 2010 Cumulative Update List

Lync Server 2013 Cumulative Update List

We already made a post on how to check the component version using PowerShell:

Skype for Business Server 2015 Component Version using PowerShell

The latest updates for Skype for Business 2015 and how to update each server role is described here:

Updates for Skype for Business Server 2015

Here is the table with the list of updates:

VersionCumulative UpdateKB Article
6.0.9319.102November 2015http://support.microsoft.com/kb/3097645
6.0.9319.88September 2015http://support.microsoft.com/kb/3098601
6.0.9319.55June 2015http://support.microsoft.com/kb/3061059
6.0.9319.0RTMNA


728x90
728x90

1. 인증서- ‘현재 사용자’ 에 대해서 ‘개인’->’인증서’ 에 저장된 인증서를 제거합니다.

clip_image002

2. 암호 저장 옵션을 풀기 위해서 아래 레지스트리를 수정합니다.

HKCU\Software\Microsoft\Communicator

SavePassword DWORD 값을 0 으로 변경합니다.

clip_image004

3. 제어판 -> 사용자 계정에서 네트워크 암호가 설정되어 있는 경우 제거 합니다.

clip_image006

4. Lync 는 부가적으로 암호화하여 암호를 저장할 수 있습니다. 필요 시 AccountPassword 값을 삭제 합니다.

HKEY_CURRENT_USER\Software\Microsoft\Communicator!AccountPassword

clip_image008

5. 사용자 계정 키 값을 삭제합니다.

HKEY_CURRENT_USER\Software\Microsoft\Communicator\useralias@domain_name

사용자 키 내에 Sing-in 캐쉬정보가 남아 있어 이로 인해 서버 연결 시 자동 인증이 동작할 수 있습니다.

clip_image010

728x90

+ Recent posts